code
#include <at89x51.h>
sbit lights= P3^1;
sbit full= P3^0;
/*=============================================================================
=============================================================================*/
unsigned char ex0_isr_counter = 0;
unsigned char enter=0;
unsigned char leave=0;
void display()
{
unsigned char a,b,c;
a=ex0_isr_counter%10;
b=ex0_isr_counter/10;
b=b<<4;
c=b|a;
P2=c;
}
void ex0_isr (void) interrupt 0
{
leave=1;
if (enter==1)
{
ex0_isr_counter++;
leave=0;
}
enter=0;
}
void ex1_isr (void) interrupt 2
{
enter=1;
if (leave==1)
{
ex0_isr_counter--;
enter=0;
}
leave=0;
}
void main (void)
{
P2 = 0x00;
IT0 = 1;
IT1 = 1;
EX0 = 1;
EX1 = 1;
EA = 1;
while (1)
{
if (ex0_isr_counter==0)
lights=0;
else
lights=1;
if (ex0_isr_counter>19)
full=1;
else
full=0;
display();
}
}