|
#include <reg51.h>
sbit key_hour=P1^0;
sbit key_min=P1^2;
sbit key_sec=P1^4;
sbit key_rst=P1^6;
unsigned char code tag[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int hour,min,sec,num;
void delay(unsigned int xms);
void display();
int main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
EA=1;
ET0=1;
while(1)
{
display();
if(num==20)
{
sec++;
num=0;
}
if(sec==60)
{
min++;
sec=0;
}
if(min==60)
{
hour++;
min=0;
}
if(hour==24)
{
hour=0;
min=0;
sec=0;
}
if(key_hour==0)
{
delay(10);
if(key_hour==0)
{
hour++;
if(hour==24) hour=0;
}
while(!key_hour);
}
if(key_min==0)
{
delay(10);
if(key_min==0)
{
min++;
if(min==60) min=0;
}
while(!key_min);
}
if(key_sec==0)
{
delay(10);
if(key_sec==0)
{
sec++;
if(sec==24) sec=0;
}
while(!key_sec);
}
if(key_rst==0)
{
delay(10);
if(key_rst==0)
{
hour=0;
min=0;
sec=0;
}
while(!key_rst);
}
}
return 0;
}
void display()
{
P0=tag[hour/10];
P3=0xfe;
delay(1);
P3=0xff;
P0=tag[hour%10];
P3=0xfd;
delay(1);
P3=0xff;
P0=0x40;
P3=0xfb;
delay(1);
P3=0xff;
P0=tag[min/10];
P3=0xf7;
delay(1);
P3=0xff;
P0=tag[min%10];
P3=0xef;
delay(1);
P3=0xff;
P0=0x40;
P3=0xdf;
delay(1);
P3=0xff;
P0=tag[sec/10];
P3=0xbf;
delay(1);
P3=0xff;
P0=tag[sec%10];
P3=0x7f;
delay(1);
P3=0xff;
}
void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=100;j>0;j--);
}
void show() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
|
评分
-
查看全部评分
|