#pragma small
#include <reg51.h>
#include <stdio.h>
#include <setjmp.h>
sfr psw=0xd0;
sfr ip=0xb8;
sfr p3=0xb0;
sfr ie=0xa8;
sfr p1=0x90;
sfr tmod=0x89;
sfr tcon=0x88;
sbit it1=tcon^2;
sbit p30=p3^0;
sbit p31=p3^1;
sbit p32=p3^2;
sbit p33=p3^3;
sbit p34=p3^4;
sbit p35=p3^5;
sbit p36=p3^6;
sbit p37=p3^7;
sbit p10=p1^0;
sbit p11=p1^1;
sbit p12=p1^2;
sbit p13=p1^3;
sbit p14=p1^4;
sbit p15=p1^5;
sbit p16=p1^6;
sbit p17=p1^7;
#define uchar unsigned char
#define uint unsigned int
uchar i,key,flag,dp,dp1;
uchar bf1[4],bf2[4],bf[4];
uchar tab[10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
uint s;

void disp1();
void delay(uint var);
void beep();
void lbeep();
void adp(uchar af);
void qd34();
void qd33();

void delay(uint var)

{
while(var!=0)var--;
}



void disp1()
{
i=0;
while(i<=3)
{
bf1[i]=~(tab[bf[i]]);
i=i+1;
}
p1=bf1[3]&0x7f;
p30=1;
delay(150);
p30=0;
delay(50);
p1=bf1[2]&0x7f;
p31=1;
delay(150);
p31=0;
delay(50);
p1=bf1[1]&0x7f;
p32=1;
delay(150);
p32=0;
delay(50);
p1=bf1[0]&0x7f;
p37=1;
delay(150);
p37=0;
delay(50);
}
void qd34()
{uchar a1,b1;
a1=0;b1=0;
for(i=0;i<20;i++)
{
if(p34==0)
{
if(p34==0)a1++;
else b1++;
}
else 
{
if(p34==1)b1++;
else a1++;
}
}
if(a1>5)dp=1;else dp=2;
a1=0;b1=0;
}

void qd33()
{uchar a1,b1;
a1=0;b1=0;
for(i=0;i<20;i++)
{
if(p33==0)
{
if(p33==0)a1++;
else b1++;
}
else 
{
if(p33==1)b1++;
else a1++;
}
}
if(a1>5)dp1=1;else dp1=2;
a1=0;b1=0;
}


void beep()
{

p17=1;
delay(5);
p17=0;
}
void lbeep()
{p17=1;
delay(10);
p17=0;
}

void afp(uchar af)
{
uint e;
if(af==1)
{
s++;
if(s>9999)
{
s=0;
lbeep();
}
bf[0]=s%10;
e=s/10;
delay(2);
bf[1]=e%10;
e=e/10;
delay(2);
bf[2]=e%10;
bf[3]=e/10;
}
else
{
if(s==0)
{
beep();
s=9999;
}
else s--;
bf[0]=s%10;
e=s/10;
delay(2);
bf[1]=e%10;
e=e/10;
delay(2);
bf[2]=e%10;
bf[3]=e/10;
}
}
void clear()
{
for(i=0;i<=3;i++)
{
bf[i]=0;
}
}


main ()
{
uchar j,y;
s=0;key=0;y=0;
dp=0;dp1=0;j=0;
clear();
disp1();
while(1)
{
disp1();
if(p35==1)y=1;
else y=2;
switch(y)
{case 1:
while(1)
{
disp1();
if(p34==0)
{
qd34();
if(dp==1)
{
while(dp!=2)
{
disp1();
qd34();
/*disp1;
disp1;
disp1;*/
}
afp(1);
}
}
else if (p33==0)
{
qd33();
if(dp1==1)
{
while(dp1!=2)
{
disp1();
qd33();
/*disp1;
disp1;
disp1;*/
}
afp(0);
}
}
}
break;

case 2:
while(1)
{
disp1();
if(p34==0)
{
qd34();
if(dp==1)
{
while((dp!=2)&&(j!=20))
{
disp1();
qd34();
j++;
}
afp(1);
j=0;
}
}
else if (p33==0)
{
qd33();
if(dp1==1)
{
while((dp1!=2)&&(j!=20))
{
disp1();
qd33();
j++;
}
afp(0);
j=0;
}
}
}
break;
}
}
}