电子秒表C程序
电子秒表程序
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c,0xff};
uchar dbuf[3]={0,0,0};
uint count;
uchar sec;
uchar mode;
void delay(void)
{ uchar i;
for(i=0;i<100;i++);
}
void disp(void)
{ uchar n,bsel;
bsel=0xfe;
for(n=0;n<3;n++)
{ P1=bsel;
P2=segtab[dbuf[n]];
bsel=_crol_(bsel,1);
delay();
P2=0xff;
}
}
void int0(void) interrupt 0
{ mode++;
if(mode==1)
TR0=1;
else if(mode==2)
TR0=0;
else if(mode==3)
{ mode=0;
TR0=0;
sec=0;
dbuf[0]=0;
dbuf[1]=0;
dbuf[2]=0;
}
}
void time0(void) interrupt 1 //haolizi
{ count++;
if(count==2000)
{ count=0;
sec++;
dbuf[2]=sec/100;
dbuf[1]=(sec%100)/10;
dbuf[0]=sec%10;
}
}
void main(void)
{
count=0;
sec=0;
mode=0;
IT0=1;
EX0=1;
TMOD=0X02;
TH0=-250;
TL0=-250;
ET0=1;
TR0=0;
EA=1;
while(1)
disp();
}