#include <reg52.h>
#define N 4 //亮度调节
sbit H=P3^2; // 调时
sbit M=P3^3; // 调分
sbit S=P3^4; //秒清零
unsigned char data i,sl,sh,ml,mh,hl,hh;
unsigned char code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void Delay(unsigned char ii)
{
unsigned int jj;
for(;ii>0;ii--)
for(jj=0;jj<2;jj++);
}
void secend (void) interrupt 1 //计时定时器
{
TL0=0xb0;
TH0=0x3c;
i=i++;
if(i==20) {i=0;sl++;} //i==20 为一秒
}
void display(void) interrupt 3 //动态扫描
{
TH1=0xaa;
TL1=0xf0;
P2=0x7f;
P0=num[sl];Delay(N);
P0=0xff ;
P2=0xbf;
P0=num[sh];Delay(N);
P0=0xff;
P2=0xdf;
P0=0xbf;Delay(N);
P0=0xff;
P2=0xef;
P0=num[ml];Delay(N);
P0=0xff;
P2=0xf7;
P0=num[mh];Delay(N);
P0=0xff;
P2=0xfb;
P0=0xbf;Delay(N);
P0=0xff;
P2=0xfd;
P0=num[hl];Delay(N);
P0=0xff;
P2=0xfe;
P0=num[hh];Delay(N);
P0=0xff;
}
void main()
{
EA=1; //中断总开关
ET0=1;
ET1=1;
TR0=1;
TR1=1;
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xaa;
TL1=0xf0;
while(1)
{
unsigned int i; i++;
if(sl==10){sl=0;sh++;}
else if(sh==6) {sl=sh=0;ml++;}
else if(ml==10){ml=0;mh++;}
else if(mh==6){ml=mh=0;hl++;}
else if(hl==10){hl=0;hh++;}
else if(hh==2&&hl==4){sl=sh=ml=mh=hl=hh=0;}
if(H==0){if(!(i%1500))hl++;}
else if(M==0){if(!(i%1500))ml++;}
else if(S==0){TH0=0x3c;TL0=0xb0;i=sl=sh=0;}
}
}
自已写的。原创
温馨提示:答案为网友推荐,仅供参考