Learn   /   Peripheral Tutorials   /   PIC16F877A

PIC16F877 external interrupt code and Proteus simulation

This post answers the question, "How to capture a pulse to generate an interrupt in PIC16F877" ?

Published

At a glance

CategoryPeripheral Tutorials
PIC modelPIC16F877A
IncludesCircuit diagram · Proteus · Download files
Reading time~2 min
Jump to a section
  1. Code
  2. Downloads
  3. Quick Solutions to Questions related to PIC16F877 External Interrupt Project:
  4. Related projects

Summary of PIC16F877 external interrupt code and Proteus simulation

This article explains how to capture a pulse on the RB0/INT pin of a PIC16F877 to generate an external interrupt that toggles RD0. It describes a Proteus-tested C implementation compiled with HI-TECH C in MPLAB, shows a circuit using a pull-down resistor and pushbutton to create a low-to-high pulse on RB0/INT, and links to downloadable code and simulation files.

Parts used in the PIC16F877 External Interrupt Project:

  • PIC16F877 microcontroller
  • Push button
  • Pull-down resistor
  • LED connected to RD0
  • Proteus (for simulation)
  • MPLAB IDE
  • HI-TECH C compiler

PIC16F877 external interrupt
Also, using PIC16 simulator (Proteus) you can verify this external interrupt code and change it according to your needs. This code is written in C language using MPLAB with HI-TECH C compiler. You can download this code from the 'Downloads' section at the bottom of this page.

This PIC16F877 microcontroller tutorial provides the external interrupt code (e-g when you need to control servo motor which has position encoder, with your PIC microcontroller you can use this code). As we know, PIC16F877 microcontroller has one RB0/INT pin, this pin is used to service external interrupts in the circuit shown below.

It is assumed that you know how to blink an LED with PIC16F877 microcontroller. If you don't then please read this page first, before proceeding with this article.

The following diagram (made in Proteus) shows the PIC microcontroller circuit diagram[1].

PIC16F877 external interrupt schematic

In the above circuit[2], normally a low value is present on the RB0/INT pin because of the pull down resistor. But when push button is pressed then a low to high pulse on the RB0/INT pin generates the interrupt. And code is written in such a way that whenever interrupt is generated then RD0 pin is toggled.

Code

The code for the main function is shown below.

Downloads

External interrupt code for PIC16F877 as compiled in MPLAB v8.85 with HI-TECH C v9.83 compiler and simulation was made in Proteus v7.10. To download code and Proteus simulation click here.

 

For more detail: PIC16F877 external interrupt code and Proteus simulation

  • How does the PIC16F877 detect an external interrupt in this project?
    The RB0/INT pin receives a low-to-high pulse from the push button which generates the external interrupt.
  • What happens when the external interrupt is generated?
    The code toggles the RD0 pin whenever an external interrupt occurs.
  • Can I simulate this external interrupt code before using real hardware?
    Yes, the code and circuit are verified in Proteus simulation.
  • What language and tools are used to write the interrupt code?
    The code is written in C using MPLAB with the HI-TECH C compiler.
  • Does the RB0/INT pin require a pull-down resistor in this circuit?
    Yes, a pull-down resistor keeps RB0/INT low until the push button is pressed.
  • Where can I download the external interrupt code and simulation?
    The article provides a Downloads section with the code and Proteus simulation files.
  • Is prior knowledge required before following this article?
    The article assumes you know how to blink an LED with PIC16F877 before proceeding.
Beginner Tutorials · PIC16F877A

PIC16F877 Driving LCD in 4-Bit Mode using PIC16F877 with Proteus Simulation

Introduction This microcontroller project shows how a PIC16F877 can drive an LCD display using 4-bit mode inside a Proteus simulation.The project demonstrates...

Programmers & ICSP · PIC16F877A

EPE PIC/LCD Demo using PIC16F877 with Proteus Simulation

IntroductionThe EPE PIC/LCD Demo is a classic microcontroller project that demonstrates how a PIC16F877 can fully control a PG12864F graphical LCD.Designed as...

Motors & Robotics · PIC16F877A

Efficient Sun-Following Robot: A Solar Tracker with Microcontroller Control

Abstract The impending global challenge of dwindling non-renewable fuel resources underscores the urgency of transitioning towards renewable energy alternatives like solar power....

Peripheral Tutorials · PIC18F4550

PICDEM FS USB Mass Storage Device using PIC18F4550 with Proteus Simulation

Introduction This microcontroller project demonstrates how to simulate a USB Mass Storage Device (MSD) using the PIC18F4550 in a Proteus simulation environment....

Peripheral Tutorials

Hands-On Digital I/O Lab with PIC18F46K22 Microcontroller

PIC18F46K22 Microcontroller Digital I/O specifically explores the design of simple combinational circuits using the digital I/O capabilities of the PIC18F46K22 microcontroller. Moving...

Peripheral Tutorials

Design for manufacturing and assembly: DFA&DFM

Product developers understand the challenges involved in creating a market-ready product. Even experienced designers often go through multiple prototype iterations before reaching...

Ibrar Ayyub

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough...