#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^3;
sbit key4=P3^2;
uchar count,k;
xianshi();
uint disnum,i,a[3],n;
uchar code tabledu[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tablewe[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
display(uint);
delay(uchar);
ss(){a[i]=disnum;i++;}
void main()
{
P0=tabledu[0];
dula=1;
dula=0;
P0=0xf0;
wela=1;
wela=0;
EA=1;
EX0=1;
IT0=1;
if(key1==0)
{ delay(50);
if(key1==0)
{EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
while(key4&&(key3||!i))
{
display(disnum);
if((key2==0)&&(i<3))
{//delay(10);
if(key2==0){
ss();
while(!key2);}
}
} i=0;
while(key4){if(key3==0)
{
while(!key3)
xianshi();
}
display(a[i]);
}
}
}
}
void time() interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
count++;
if(count==2)
{ count=0;
if(disnum==6000)
disnum=0;
disnum++;}
}
void exta0() interrupt 0
{
P0=0x00;
wela=1;
wela=0;
P0=tabledu[0];
dula=1;
dula=0;
P0=0xf0;
wela=1;
wela=0;
}
xianshi()
{if(i==2)i=-1;i++;}
display(uint n)
{P0=0xff;
wela=1;
wela=0;
P0=tabledu[n/1000];
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(1);
P0=0xff;
wela=1;
wela=0;
P0=tabledu[n%1000/100];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(1);
P0=0xff;
wela=1;
wela=0;
P0=tabledu[n%1000%100/10];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(1);
P0=0xff;
wela=1;
wela=0;
P0=tabledu[n%1000%100%10];
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(1);
}
delay(uchar z)
{
uchar a,b;
for(a=z;a>0;a--)
for(b=200;b>0;b--);
}