#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0X87,0xFF,0xDF};
uchar seconde=0;
uchar minite=0;
uchar hour=12;
uchar mstcnt=0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
void delay(uint k);
void delay1(uchar h);
void time_pro();
void display();
void keyscan();
void delay1(uchar h)
{
uchar j;
while((h--)!=0)
{
for(j=0;j<125;j++)
{
;
}
}
}
void delay(uint k)
{
uint a,b,c;
for(c=k;c>0;c--);
for(b=38;b>0;b--);
for(a=130;a>0;a--);
}
void time_pro(void)
{
if(seconde==60)
{
seconde=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
void display(void)
{
P2=0xfe;
P0=dispcode[hour/10];
delay1(4);
P2=0xfd;
P0=(dispcode[(hour%10)]);
delay1(4);
P2=0xfb;
P0=dispcode[minite/10];
delay1(4);
P2=0xf7;
P0=dispcode[minite%10];
delay1(4);
P2=0xef;
P0=dispcode[seconde/10];
delay1(4);
P2=0xdf;
P0=dispcode[seconde%10];
delay1(4);
}
void keyscan(void)
{
if(P1_1==0)
{
delay(8000);
if(P1_0==0)
{
delay(8000);
seconde++;
if(seconde==60)
{
seconde=0;
}
}
}
if(P1_1==0)
{
delay(8000);
if(P1_1==0)
{
delay(8000);
minite++;
if(minite==60)
{
minite=0;
}
}
}
if(P1_2==0)
{
delay(8000);
if(P1_2==0)
{
delay(8000);
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
void timer0(void) interrupt 1 using 0
{
TH0=0x3c;
TMOD=0x11;
mstcnt++;
if(mstcnt==20)
{
seconde++;
mstcnt=0;
}
}
void main(void)
{
P1=0xff;
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
while(1)
{
keyscan();
time_pro();
display();
}
}
|