#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit K0=P3^0;
sbit beep=P3^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit S1=P3^2;
sbit S2=P3^3;
sbit S3=P3^4;
char s;
uchar num=0;
char time1;
char time2;
uint m,n;
bit flag1,flag2,flag3,flag4;
bit aa,bb;
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--); }
uchar code table1[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71 };
uchar code table2[]={
0xfe,0xfd,
0xfb,0xf7 };
void init()
{TMOD=0x11;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
ET0=1;
ET1=1;
EA=1;
P0=0x00;
time1=10;
time2=10;
flag2=1; }
void key1()
{uchar i=100;
if(K0==0)
{delay(10);
if(K0==0)
{ while(K0==0&&i)
{i--;
delay(10);}
TR0=1;
s=time1;
m=0;
flag1=1;
flag2=1;
flag3=1;
num=0;
beep=1;
flag4=0;
aa=0;
bb=0;
}
}
}
void key()
{uchar j=100;
if(K1==0)
{delay(10);
if(K1==0)
{while(K1==0&&j)
{j--;
delay(10);}
num=1;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K2==0)
{
delay(10);
if(K2==0)
{while(K2==0&&j)
{j--;
delay(10);}
num=2;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K3==0)
{delay(10);
if(K3==0)
{while(K3==0&&j)
{j--;
delay(10);}
num=3;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K4==0)
{delay(10);
if(K4==0)
{while(K4==0&&j)
{j--;
delay(10);}
num=4;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K5==0)
{delay(10);
if(K5==0)
{while(K5==0&&j)
{j--;
delay(10);}
num=5;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K6==0)
{delay(10);
if(K6==0)
{while(K6==0&&j)
{j--;
delay(10);}
num=6;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K7==0)
{delay(10);
if(K7==0)
{while(K7==0&&j)
{j--;
delay(10);}
num=7;
TR0=0;
TR1=1;
flag2=0;
}
}
if(K8==0)
{delay(10);
if(K8==0)
{while(K8==0&&j)
{j--;
delay(10);}
num=8;
TR0=0;
TR1=1;
flag2=0;
}
}
}
void display()
{if(flag1==1)
{if(num!=0)
{P0=table1[num];
P2=table2[0];
delay(2);
P0=0;
P2=0xff;
}
else
{P0=0x00;
P2=0xff;}
P0=table1[s/10];
P2=table2[2];
delay(2);
P0=0;
P2=0xff;
P0=table1[s%10];
P2=table2[3];
delay(2);
P2=0xff;
P0=0x00;
}
else
{if(flag4==1)
{if(num!=0)
{P0=table1[num];
P2=table2[0];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[15];
P2=table2[2];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[15];
P2=table2[3];
delay(2);
P0=0x00;
P2=0xff;
}
else
{
P0=0x00;
P2=0xff;}
}
else
{if(aa==1)
{
P0=0x76;
P2=table2[0];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[time1/10];
P2=table2[2];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[time1%10];
P2=table2[3];
delay(2);
P0=0x00;
P2=0xff;
}
else if(bb==1)
{P0=0x38;
P2=table2[0];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[time2/10];
P2=table2[2];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[time2%10];
P2=table2[3];
delay(2);
P0=0x00;
P2=0xff;
}
else
{P0=table1[15];
P2=table2[0];
delay(2);
P0=0x00;
P0=table1[15];
P2=table2[2];
delay(2);
P0=0x00;
P2=0xff;
P0=table1[15];
P2=table2[3];
delay(2);
P0=0x00;
P2=0xff;
}
}
}
}
void key2()
{uchar i=100;
if(S2==0)
{delay(10);
if(S2==0)
{while(S2==0&&i)
{i--;
delay(10);}
time1++;
if(time1==61)
{time1=10;}
aa=1;
bb=0;
}
}
if(S3==0)
{delay(10);
if(S3==0)
{while(S3==0&&i)
{i--;
delay(10);}
time2++;
if(time2==61)
{time2=10;}
bb=1;
aa=0;
}
}
}
void main()
{uchar i=100;
init();
while(1)
{key1();
if((flag1==0)&(flag2==1))
{key2();}
if((flag1==1)&(flag2==0))
{if(S1==0)
{delay(10);
if(S1==0)
{while(S1==0&&i)
{i--;
delay(10);}
s=time2;
TR0=1;
m=0;
TR1=1;
}
}
}
if((flag1==0)&(flag2==1))
{key();
if(num!=0)
{flag4=1;
}
}
if((flag1==1)&(flag2==1))
{key();}
display();
}
}
//¶¨ê±Æ÷0ÖD¶Ï×óoˉêy
void t0() interrupt 1
{TH0=(65536-2000)/256;//2ms
TL0=(65536-2000)%256;
if(flag3)
{
beep=~beep;
}
else
beep=1;
if(s<5)
{if(s%2==0)
{flag3=1;
}
else
{flag3=0;
}
}
m++;
if(m==500)//1Ãë
{m=0;
s--;
flag3=0;
if(s==-1)
{s=20;
TR0=0;
flag1=0;
flag2=1;
num=0;
}
}
}
void t1() interrupt 3
{TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
beep=~beep;
n++;
if(n==500)
{n=0;TR1=0;}
}
|