#include<reg52.h> #define uchar unsigned char
#define uint unsigned int
#define dula P0
#define wela P2 sbit led1=P1^0;
sbit led2=P1^1;
sbit s1=P3^4; //数码管转换
sbit s2=P3^5; //按键加一
sbit s3=P3^6; //按键减一 uchar shi2,shi1,fen2,fen1,aa,j,k;
int num2=0,num1=0,key=0,num=0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0xff}; void delay(uchar i)
{
for(j=i;j>0;j--)
for(k=110;k>0;k--);
} void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1)
{
P2=0xfe;
P0=table[shi2];
delay(5);
dula=0xff;
delay(5); P2=0xfd;
P0=table[shi1];
delay(5);
dula=0xff;
delay(5); P2=0xfb;
P0=table[fen2];
delay(5);
dula=0xff;
delay(5); P2=0xf7;
P0=table[fen1];
delay(5);
dula=0xff;
delay(5);
}
void keyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(~s1);
key++;
if(key==3)
{
TR0=1;
//display(shi2,shi1,fen2,fen1);
key=0;
}
}
} if(s2==0)
{
delay(10);
if(s2==0)
{
while(~s2);
if(key==1)
{
TR0=0;
num2++;
if(num2==24)
num2=0;
} if(key==2)
{
TR0=0;
num1++;
if(num1==60)
num1=0;
}
}
} if(s3==0)
{
delay(10);
if(s3==0)
{
while(~s3);
if(key==1)
{
TR0=0;
num2--;
if(num2==-1)
num2=23;
} if(key==2)
{
TR0=0;
num1--;
if(num1==-1)
num1=59;
}
}
}
} void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
} void main()
{
init();
while(1)
{
keyscan();
if(aa==10)
{
led1=0;
led2=0;
}
if(aa==19)
{
led1=1;
led2=1;
}
if(aa==20)
{
aa=0;
num++;
if(num==60)
{
num=0;
num1++;
if(num1==60)
{
num1=0;
num2++;
if(num2==24)
{
num2=0;
}
}
}
} shi2=num2/10;
shi1=num2%10;
fen2=num1/10;
fen1=num1%10;
if((shi2==0)&&(shi1>0))
{
shi2=10;
}
display(shi2,shi1,fen2,fen1);
}
} void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
#define uint unsigned int
#define dula P0
#define wela P2 sbit led1=P1^0;
sbit led2=P1^1;
sbit s1=P3^4; //数码管转换
sbit s2=P3^5; //按键加一
sbit s3=P3^6; //按键减一 uchar shi2,shi1,fen2,fen1,aa,j,k;
int num2=0,num1=0,key=0,num=0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0xff}; void delay(uchar i)
{
for(j=i;j>0;j--)
for(k=110;k>0;k--);
} void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1)
{
P2=0xfe;
P0=table[shi2];
delay(5);
dula=0xff;
delay(5); P2=0xfd;
P0=table[shi1];
delay(5);
dula=0xff;
delay(5); P2=0xfb;
P0=table[fen2];
delay(5);
dula=0xff;
delay(5); P2=0xf7;
P0=table[fen1];
delay(5);
dula=0xff;
delay(5);
}
void keyscan()
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(~s1);
key++;
if(key==3)
{
TR0=1;
//display(shi2,shi1,fen2,fen1);
key=0;
}
}
} if(s2==0)
{
delay(10);
if(s2==0)
{
while(~s2);
if(key==1)
{
TR0=0;
num2++;
if(num2==24)
num2=0;
} if(key==2)
{
TR0=0;
num1++;
if(num1==60)
num1=0;
}
}
} if(s3==0)
{
delay(10);
if(s3==0)
{
while(~s3);
if(key==1)
{
TR0=0;
num2--;
if(num2==-1)
num2=23;
} if(key==2)
{
TR0=0;
num1--;
if(num1==-1)
num1=59;
}
}
}
} void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
} void main()
{
init();
while(1)
{
keyscan();
if(aa==10)
{
led1=0;
led2=0;
}
if(aa==19)
{
led1=1;
led2=1;
}
if(aa==20)
{
aa=0;
num++;
if(num==60)
{
num=0;
num1++;
if(num1==60)
{
num1=0;
num2++;
if(num2==24)
{
num2=0;
}
}
}
} shi2=num2/10;
shi1=num2%10;
fen2=num1/10;
fen1=num1%10;
if((shi2==0)&&(shi1>0))
{
shi2=10;
}
display(shi2,shi1,fen2,fen1);
}
} void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}









