#include <reg52.h>
#define time_delay 100 //time-delay = 延时
typedef unsigned char u8;
typedef unsigned int u16;
u8 Time; //Time = 时间
u16 Millisecond,Second=0; //Millisecond = 毫秒 Second = 秒
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 code smgwei[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
sbit key=P3^1;
void delay(u16 i)
{
while(i--);
}
void Time0init()
{
TMOD=0x01;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
ET0=1;
EA=1;
TR0=1;
}
void display()
{
//显示毫秒部分
P2=smgwei[0];
P0=smgduan[Millisecond%10];
delay(time_delay);
P0=0x00;
P2=smgwei[1];
P0=smgduan[Millisecond/10%10];
delay(time_delay);
P0=0x00;
P2=smgwei[2];
P0=smgduan[Millisecond/100%10];
delay(time_delay);
P0=0x00;
P2=smgwei[3];
P0=smgduan[Millisecond/1000%10];
delay(time_delay);
P0=0x00;
P2=smgwei[4];
P0=0x40;
delay(time_delay);
P0=0x00;
//显示秒部分
P2=smgwei[5];
P0=smgduan[Second%10];
delay(time_delay);
P0=0x00;
P2=smgwei[6];
P0=smgduan[Second/10%10];
delay(time_delay);
P0=0x00;
P2=smgwei[7];
P0=smgduan[Second/100%10];
delay(time_delay);
P0=0x00;
}
void main()
{
Time0init();
while(1)
{
display();
}
}
void Time0() interrupt 1
{
TH0=(65536-50)/256;
TL0=(65536-50)%256;
Time++;
{
if(Time==2)
{
Millisecond++;
Time=0;
}
if(Millisecond>=10000)
{
Millisecond=0;
Second++;
}
if(Second==100)
{
Second=0;
}
}
}