- #include"reg51.h"
#include"intrins.h"
#define seg1 P0
#define seg2 P2
typedef unsigned int u16;
typedef unsigned char u8;
u16 code smg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key1=P3^2;
sbit key2=P3^3;
sbit buzzer=P1^0;
u16 num=0;
u16 i=0;
void delay(u16 i)
{
while(i--);
}
void int_init()
{
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void tim0_init()
{
ET0=1;
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=0;
}
void display()
{
seg1=~smg[num/10%10];
delay(10);
seg2=~smg[num%10];
delay(10);
}
void main()
{
buzzer=0;
int_init();
tim0_init();
while(1)
{
display();
}
}
void int0() interrupt 0
{
if(key1==0)
{
delay(1000);
if(key1==0)
{
TR0=1;
}
}
}
void int1() interrupt 2
{
if(key2==0)
{
delay(1000);
if(key2==0)
{
TR0=0;
}
}
}
void tim0() interrupt 1
{
TH0=0XFC;
TL0=0X18;
if(i==1000)
{
i=0;
num++;
}
i++;
if(num==61)
{
buzzer=1;
delay(1000);
buzzer=0;
num=0;
}
}