0% found this document useful (0 votes)
169 views

Interrupts 8051 Microcontroller How To Use External Interrupt

The document discusses how to use external interrupts with the 8051 microcontroller. It explains that the 8051 has six interrupt sources including two external hardware interrupts, INT0 and INT1. It describes how to configure the interrupt enable register to allow specific interrupts and make interrupts edge-triggered. The document provides code for an external interrupt service routine using INT0 to toggle LEDs on and off with a 1 second delay when a button is pressed.

Uploaded by

Siddhasen Patil
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
169 views

Interrupts 8051 Microcontroller How To Use External Interrupt

The document discusses how to use external interrupts with the 8051 microcontroller. It explains that the 8051 has six interrupt sources including two external hardware interrupts, INT0 and INT1. It describes how to configure the interrupt enable register to allow specific interrupts and make interrupts edge-triggered. The document provides code for an external interrupt service routine using INT0 to toggle LEDs on and off with a 1 second delay when a button is pressed.

Uploaded by

Siddhasen Patil
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

INTERRUPTS 8051

MICROCONTROLLER HOW to use


external interrupt
February 5, 2017 by Microcontrollers Lab
USING INTERRUPTS 8051 MICROCONTROLLER: Interrupts are used
for communication between the microcontroller and the external device. We already
explained the purpose of interrupts use in previous article of interrupts use in PIC
microcontroller in detail. Now the purpose of this article to explain how to use
interrupts in 8051 microcontroller. Before reading this article you should know how to
use keil for programming of 8051 and how to use input output ports of 8051
microcontroller.
Page Contents [hide]
 1 TYPES of INTERRUPTS 8051 MICROCONTROLLER
 2 8051 microcontroller INTERRUPTS SERVICE
 3 INTERRUPTS 8051 microcontroller VECTOR TABLE
 4 INTERRUPTS 8051 microcontroller ENABLE (IE) REGISTER
 5 PROTEUS SIMULATIONS external interrupts 8051 microcontroller
 6 CODE 0f external interrupts 8051 microcontroller

TYPES of INTERRUPTS 8051 MICROCONTROLLER


8051 microcontroller can recognize six different types of events that request the
microcontroller to stop to perform the current program temporarily and make time to
execute a special code. The interrupts sources present in 8051 microcontroller are:
 Reset interrupt
 Timer0 overflow interrupt TF0
 Timer1 overflow interruptTF1
 External hardware interrupt INT0
 External hardware interrupt INT1
 Serial communication interrupt (RI/TI)
Timers and Serial interrupts are internally generated by the microcontroller while the
external interrupts are generated when externally interfacing devices or switches are
connected to the microcontroller. These external interrupts can be edge triggered or
level triggered.
8051 microcontroller INTERRUPTS SERVICE
A fixed memory area is assigned for each interrupt inside the microcontroller.
The Interrupt Vector Table contains the starting address of the memory location of
every interrupt. When an interrupt occurs, the controller transfers the content of program
counter into stack. Then it jumps to the memory location which is specified by Interrupt
Vector Table (IVT). The code written on that memory area by the programmer starts its
execution. That code is called Interrupt Service Routine (ISR) or interrupt handler.
INTERRUPTS 8051 microcontroller VECTOR TABLE

1. RESET INTERRUPT:
When reset pin is activated, controller jumps to execute code from 0000H memory
location. Mostly it is not used. It is also known as power on reset.
2. TIMER INTERRUPTS:
Two timers (T0 and T1) are present in 8051 microcontroller which is responsible for
Timer interrupt. A timer interrupt informs the microcontroller that corresponding Timer
has finished the counting.Memory locations 000BH and 001BH in the interrupt vector
table belongto Timer0 and Timer1 respectively.
3. EXTERNAL INTERRUPTS:
There are two external interrupts (INT0 and INT1) to serve external devices.
Pinnumbers 12 and 13 in port 3 are for the external hardware interrupts.Both these
interrupts are active low. An external interrupt informs the microcontroller that an
external device needs its routine service.Memory locations 0003H and 0013H in the
interrupt vector table belong to INT0 and INT1 respectively.
4. SERIAL INTERRUPT:
This interrupt is used for serial communication. It has a single interrupt that belongs to
both receive andtransmit. When enabled, it notifies the controller whether a byte has
been received or transmitted.The interrupt vector table location 0023H belongs to this
interrupt.
 REGISTER CONFIGURATION (for interrupt selection):
Now we have to specify the microcontroller that which interrupts must be served. All of
the above interrupts can be used by configuringsome bit in special function register
known as Interrupt Enabled (IE) register. This registers enable or disable the various
available interrupts.
INTERRUPTS 8051 microcontroller ENABLE (IE)
REGISTER
EA: Enable Interrupt
EA bit must be set to 1 to enable any of the interrupts. By default all the interrupts are in
disabled mode.
EA = 1 Enable Interrupt
EA = 0 Disable Interrupt
ET2: Timer2 interrupt enable bit
Enable or disable Timer2 overflow or capture interrupt only in 8052. In AT89C51, there
are only two timers, so ET2 is not used.
ES: Serial port interrupt enable bit
Enable or disable Serial port interrupt.
ET1: Timer1 interrupt enable bit
ET0 = 1, Enable Timer1 overflow interrupt
ET0 = 0, Disable Timer1 overflow interrupt.
EX1: External interrupt INT1 enable bit
EX1 = 1, Enable INT1
EX1 = 0, Disable INT1
ET0: Timer0 interrupt enable bit
ET0 = 1, Enable Timer0 overflow interrupt
ET0 = 0, Disable Timer0 overflow interrupt
EX1: External interrupt INT0 enable bit
EX1 = 1, Enable INT0
EX1 = 0, Disable INT0
 INTERRUPT SERVICE ROUTINE:
After the selection of specific interrupt, next step is to specify the microcontroller that
what to do when an interrupt occurs. We write a subroutine or function for the interrupt
which is the ISR. It is automatically called when an interrupt occurs. The definition of
subroutine must have the keyword interrupt with the interrupt number. Each interrupt
has its specific subroutine number.
EXTERNAL INTERRUPTS:
Since we already discussed how to use timers in 8051, so in this article we will just
learn how to use external interrupts in 8051. External interrupts are received from the
external interfaced devices at INTx pins of the microcontroller. These can be level
triggered or edge triggered which is decided by TCON register.
For level triggered: interrupt is enabled for a low at INTx pin.
For edge triggered: interrupt is enabled for a high to low transition at INTx pin.

TCON REGISTER:
Setting the IT0 and IT1 bits make the external interrupt 0 and 1 edge triggered
respectively. By default these bits are set to 0, so external interrupt is level triggered.
IT1: External interrupt1 signal type control bit.
IT1 = 1, to enable external interrupt 1 to be triggered by a falling edge signal
IT1 = 0, to enable a low level signal on external interrupt 1 to generate an interrupt
IT0: External interrupt 0 signal type control bit, same as IT1.
IT0 = 1, to enable external interrupt 0 to be triggered by a falling edge signal
IT0 = 0, to enable a low level signal on external interrupt 1 to generate an interrupt
PROGRAMMING STEPS:
1. Enable external interrupt 0 or external interrupt 1 by configuring IE register. For
this we have to give command as:
For INT0: IE=0x81;
For INT1: IE=0x84;
2. Now we have to write routine for external interrupt.For EX0 (INT0), the interrupt
number is 0 and for EX1 (INT1) interrupt number is 1.
For using external interrupt INT0 we have to write routine as:
void ISR_ex0(void) interrupt 0
For using external interrupt INT1 we have to write routine as:
void ISR_ex1(void) interrupt 2
3. For edge triggered external interrupt, IT0 or IT1 is set to 1.
For INT0: IT0=1;
For INT1: IT1=1;

PROTEUS SIMULATIONS external interrupts 8051


microcontroller

We used the external interrupt INT0 of 8051 microcontroller. Port 2 is used to monitor
the output. In beginning, alternate values are passed to P2 LEDs. When external
interrupt is given through a push button, Interrupt service routine will start to execute
and LEDs output will get toggle for 1 sec. This 1 sec delay is given through timer 0
when it is in mode 1.

CODE 0f external interrupts 8051 microcontroller


#include<reg51.h>

sbit led1= P2^0;

sbit led2= P2^1;

sbit led3= P2^2;

sbit led4= P2^3;

void ISR_ex0(void);

void Delay();

void main()

{
P0 = 0x00; // Make all pins zero

P1 = 0x00; // Make all pins zero

P2 = 0x00; // Make all pins zero

P3 = 0x04; // making Port3 pin 2 high

IE=0x81; // Enable INT0

IT0=1; // Set Falling Edge Trigger for INT0

while(1)

led1= 1;

led2= 0;

led3= 1;

led4= 0;

void ISR_ex0(void) interrupt 0 // ISR for external interrupt INT0


{

led1=~led1;

led2=~led2;

led3=~led3;

led4=~led4;

Delay();

void Delay()

int i;

TMOD = 0x01; // Timer0 mode1

for(i=0;i<200;i++)

TH0=0xF8; //initial values for 1sec delay

TL0=0xCC;

TR0 = 1; // timer0 start

while (TF0 == 0); // check overflow condition

TR0 = 0; // Stop Timer

TF0 = 0; // Clear flag

You might also like