#include
#include
#define uchar unsigned char
#define uint unsigned int
bit OK;
sbit speak=P2^0;
sbit start=P3^1;
sbit end=P3^6;
sbit add=P3^4;
sbit sub=P3^5;
sbit S1=P2^1;
sbit S2=P2^3;
sbit S3=P2^5;
sbit S4=P2^7;
uchar Q_T=20,H_T=30,qt,ht;
uchar a=11,b=11,c=11,d=11,n,m=0,k;
uchar code dis_7[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0x00,0x80};
void delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++);
for(j=0;j<120;j++);
}
void nose()
{
speak=0;
delay1ms(500);
speak=1;
}
void display()
{
P0=dis_7[a];
S1=0;
delay1ms(5);
S1=1;
P0=dis_7[11];
S2=0;
delay1ms(5);
S2=1;
P0=dis_7[b];
S3=0;
delay1ms(5);
S3=1;
P0=dis_7[c];
S4=0;
delay1ms(5);
S4=1;
}
void false()
{
if(P1!=0xff)
{
if(P1==0xf7)
{
m=1;
}
if(P1==0xfb)
{
m=2;
}
if(P1==0xfd)
{
m=3;
}
if(P1==0xfe)
{
m=4;
}
if(P1==0xef)
{
m=5;
}
if(P1==0xdf)
{
m=6;
}
if(P1==0xbf)
{
m=7;
}
if(P1==0x7f)
{
m=8;
}
n=0;
while(end==1)
{
if(n<6)
{
a=10;b=10;c=10;
display();
speak=1;
}
if(n>=6)
{
a=m;b=11;c=11;
display();
speak=0;
}
if(n==20)
{
n=0;
}
}
speak=1;m=0;
a=10;b=10;c=10;
}
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
EX0=1;
EX1=1;
OK=0;
speak=1;
TR0=1;
while(1)
{
display();
while(start==1)
{
false();
display();
if(start==0)
{
delay1ms(2);
while(start==0);
nose();
OK=1;
TR0=0;
qt=Q_T;
n=0;
while(qt>0&&end==1&&OK==1&&P1==0xff)
{
TR0=1;
a=10;
b=qt/10;
c=qt%10;
display();
speak=1;
if(n>20)
{
n=0;
qt--;
}
if(qt<=5)
{
if(n<7)
{
speak=1;
}
if(n>7)
{
speak=0;
}
}
if(qt==0)
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
if(end==0)
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
if(P1!=0xff)
{
k=P1;
nose();
if(k==0xf7)
{
m=1;
}
if(k==0xfb)
{
m=2;
}
if(k==0xfd)
{
m=3;
}
if(k==0xfe)
{
m=4;
}
if(k==0xef)
{
m=5;
}
if(k==0xdf)
{
m=6;
}
if(k==0xbf)
{
m=7;
}
if(k==0x7f)
{
m=8;
}
n=0;
ht=H_T;
while(end==1&&ht>0)
{
TR0=1;
a=m;
b=ht/10;
c=ht%10;
display();
speak=1;
if(n==20)
{
n=0;
ht--;
}
if(ht<=5)
{
if(n<7)
{
speak=1;
}
if(n>7)
{
speak=0;
}
}
}
}
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
}
}
}
}
void time_intt0(void) interrupt 1
{
TH0=0x3c;TL0=0xb0;
n++;
}
void time_intt2(void) interrupt 0
{
while(end==1)
{
if(add==0)
{
delay1ms(2);
while(add==0);
if(Q_T>=99)
{
Q_T=0;
}
else
{
Q_T++;
}
}
if(sub==0)
{
delay1ms(2);
while(sub==0);
if(Q_T<=0)
{
Q_T=99;
}
else
{
Q_T--;
}
}
a=10;b=Q_T/10;c=Q_T%10;
display();
}
a=10;b=10;c=10;
display();
}
void time_intt3(void) interrupt 2
{
while(end==1)
{
delay1ms(2);
while(add==0);
if(H_T>=99)
{
H_T=0;
}
else
{
H_T++;
}
}
if(sub==0)
{
delay1ms(2);
while(sub==0);
if(H_T<=0)
{
H_T=99;
}
else
{
H_T--;
}
}
a=10;b=H_T/10;c=H_T%10;
display();
}
a=10;b=10;c=10;
display();
}

