#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sfr Scan_Com=0x90;
sfr Date_Com=0xA0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint Num,Num1,Num2,Num4,Num5,Num7,Num8,Num9;
uchar flag;
void Delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Time0_Init()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void Write_Date(uchar add,uchar date)
{
Scan_Com=add;
Date_Com=table[date];
}
void main()
{
Time0_Init();
Num8=1,Num7=1,Num5=5,Num4=7,Num2=0,Num1=0;
while(1)
{
Write_Date(0x01,Num1);Delay_ms(2);
Write_Date(0x02,Num2);Delay_ms(2);
Scan_Com=0x04;Date_Com=0x40;Delay_ms(2);
Write_Date(0x08,Num4);Delay_ms(2);
Write_Date(0x10,Num5);Delay_ms(2);
Scan_Com=0x20;Date_Com=0x40;Delay_ms(2);
Write_Date(0x40,Num7);Delay_ms(2);
Write_Date(0x80,Num8);Delay_ms(2);
}
}
void Time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Num++;
if(Num>20)
{ Num1++;
if(Num1>9)
{ Num1=0;Num2++;}
if(Num2>5)
{ Num2=0; Num4++;}
if(Num4>9)
{ Num4=0;Num5++;}
if (Num5>5)
{ Num5=0; Num7++;Num9++;}
if(Num7>9)
{Num7=0;Num8++;}
if(Num9>20)
{if(Num7>3)
{Num8=0;Num7=0;Num5=0;Num4=0;Num2=0;Num1=0;}}
Num=0;
}
}