#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define hw 0xfe //显示小时的位置
#define mw 0xf7 //显示分钟的位置
#define sw 0xbf //显示秒的位置
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar hour,min,sec;
bit flag;
void delay(uint com)
{
while(com--);
}
void init()
{
TMOD=0X01;
TH0=0X3c;
TL0=0xb0;
TR0=1;
EA=1;
ET0=1;
}
void display(uchar add,uchar com)
{
P0=*(led+com/10);
P1=add;
delay(30);
P0=*(led+com%10);
P1=~(~add<<1);
delay(30);
if(flag)
{
P0=0x40;
P1=0xdb;
delay(30);
}
}
void disp()
{
display(hw,hour);
display(mw,min);
display(sw,sec);
}
void main()
{
delay(10);
init();
while(1)
{
disp();
}
}
void time() interrupt 1
{
static uchar i;
TH0=0X3C;
TL0=0XB0;
i++;
if(i==10){flag=!flag;}
if(i==20)
{
flag=!flag;
i=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}