//通过中断控制时间,在数码管上显示
#include<reg52.h>
sbit wei=P2^3;
sbit duan=P2^2;
unsigned char code d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //duan
unsigned char code w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char tt[8];
int num;
void main()
{
int sz1,sz2,fz1,fz2,mz1,mz2,i,t;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
sz1=1; //定位显示初始值
sz2=6;
fz1=5;
fz2=2;
mz1=0;
mz2=0;
while(1)
{
for(i=0;i<8;i++)
{
//num++:
t=300;
while(t--);
if(num==20)
{
num=0;
mz2++;
if(mz2>9)
{mz2=0;mz1++;}
if(mz1>5)
{fz2++;mz1=0;}
if(fz2>9)
{fz1++; fz2=0;}
if(fz1>5)
{sz2++;fz1=0;}
if(sz2>9)
{sz1++;sz2=0;}
if(sz1==2&&sz2>4)
sz1=0;
}
tt[0]=d[sz1];
tt[1]=d[sz2];
tt[2]=0x40;
tt[3]=d[fz1];
tt[4]=d[fz2];
tt[5]=0x40;
tt[6]=d[mz1];
tt[7]=d[mz2];
P0=w[i];
wei=1;
wei=0;
P0=tt[i];
duan=1;
duan=0;
}
}
}
void time0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}