#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar a,num;
char hour,fen,miao;
sbit wela=P2^7;
sbit dula=P2^6;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit s4=P3^7;
void delay(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
miao=0;
fen=0;
hour=0;
num=0;
}
void display()
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[hour/10];
dula=0;
P0=0xff;
delay(5);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[hour%10];
dula=0;
P0=0xff;
delay(5);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[fen/10];
dula=0;
P0=0xff;
delay(5);
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[fen%10];
dula=0;
P0=0xff;
delay(5);
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=table[miao/10];
dula=0;
P0=0xff;
delay(5);
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[miao%10];
dula=0;
P0=0xff;
delay(5);
}
void keyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(!s1);
num++;
}
}
if(num==1)
{
TR0=0;
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
miao++;
if(miao==60)
miao=0;
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s3);
miao--;
if(miao==-1)
miao=59;
}
}
}
if(num==2)
{
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
fen++;
if(fen==60)
fen=0;
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s3);
fen--;
if(fen==-1)
fen=59;
}
}
}
if(num==3)
{
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2);
hour++;
if(hour==24)
hour=0;
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{
while(!s3);
hour--;
if(hour==-1)
hour=23;
}
}
}
if(num==4)
{
num=0;
TR0=1;
}
}
void main()
{
init();
while(1)
{
display();
keyscan();
}
}
void timer0() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
a++;
if(a==20)
{
a=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
display();
}
}
|