#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint time=0;
uint i,j,c=1,d,a=30;
uint b=5,f=5,k=20;
sbit P20=P2^0; //定义p2.0,p2.1
sbit P21=P2^1;
void delay(uint Delay) //延时显示
{ uint q;
for(;Delay>0;Delay--)
{for(q=0;q<31;q++);
}
}
void xianshi(uint d)
{
i=d%10;
j=d/10;
if(d==-1)
{
if(a==-1)
a=30;
if(b==-1)
b=5;
if(f==-1)
f=5;
if(k==-1)
k=20;
c++;
if(c==5)
{c=1;}
}
P0=i;
P20=0;
delay(1);
P20=1;
P0=j;
P21=0;
delay(1);
P21=1;
}
timer0()interrupt 1 using 1 //中断后进入这里,定时器0方式一
{
time++; // 20次后是一秒
TH0=0x3c;
TL0=0xb0;
}
main()
{
P2=0xff;
TMOD=0x01; //方式一
TH0=0x3c;
TL0=0xb0;
EA=1; //总中断容许
ET0=1; //t0中断容许
TR0=1; // 开始定时
for(;;)
{
if(time==20) //到20次后加一秒
{time=0;
if(c==1){a--;}
if(c==2){b--;}
if(c==3){k--;}
if(c==4){f--;}
}
else
{ if(c==1)
{P1=0xD7;
xianshi(a);
}
if(c==2)
{P1=0xED;
xianshi(b);
}
if(c==3)
{P1=0xFA;
xianshi(k);
}
if(c==4)
{P1=0xED;
xianshi(f);
}
}
}