Calling an ISR using external interrupt INT0.
Code :
#include<reg51.h> // Include 8051 library.
sbit led = P1^0; // Set the port where the interrupt led is connected.
sbit led1 = P1^1; // Set the port where the led is connected.
void delay(unsigned int t); // Delay for turning ON and OFF interrupt LED,
void delay1(int s); // Delay for turning ON and OFF LED,
void exo_isr() interrupt 0 // Interrupt function.
{
led = ~led; // Led turned ON & OFF.
delay(1000); // Delay calling for interrupt LED,}
void main() // Main function starts
{
EA = 1; // All interrupts enabled.
EX0 = 1; // External interrupt enabled.
IT0 =0; // Interrupt triggered on level.
while(1) // Infinite loop.
{
led1 = ~led1; // Led1 turned ON & OFF.
delay1(1000); // Delay calling for LED1, }
}
void delay(unsigned int t) // Delay function
{
int i; // Assigning integer i.
TMOD = 0X00; // Setting the Timer 0 in Mode 0 config.
for(i=0;i<t;i++) // For loop for delay
{
TH0 = 0X19; // Assigning 19hex value to TH for 8millisec delay.
TL0 = 0X13; // Assigning 13hex value to TL for 8millisec delay.
TR0 = 1; // Initializing Timer 0.
while(TF0==0); // Waiting for timer to complete 8millisec.
TF0 = 0; // Timer overflow flag reset.
}
}
void delay(int s) // Delay function
{
int i ,j; // Assigning integer i & j.
for(i=0;i<100*s ; i++) // For loop for delay
for(j=0;j<=1275;j++); // Nested For loop for delay
int i ,j; // Assigning integer i & j.
for(i=0;i<100*s ; i++) // For loop for delay
for(j=0;j<=1275;j++); // Nested For loop for delay
}
Comments
Post a Comment