|
#include<reg52.h>
#define uchar unsigned char
#define unit unsigned int
uchar num;
uchar num1;
uchar flag1,flag2;
uchar flag3,flag4=0;
uchar code table[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};
sbit dula=P1^6;
sbit wela=P1^7;
sbit sp=P3^0;
sbit clear=P1^0;
sbit start=P1^1;
sbit key1=P1^2;
sbit key2=P1^3;
sbit key3=P1^4;
sbit key4=P1^5;
void delay(int z)
{
int i,j;
for(i=z;i>0;i++)
for(j=110;j>0;j--);
}
void beep()
{
sp=0;
delay(500);
sp=1;
}
void display(int a)
{
wela=1;
P2=0xFF;
wela=0;
dula=1;
P2=table[a];
dula=0;
P2=0xFF;
wela=1;
P2=0xFD;
wela=0;
delay(5);
}
void clr()
{
dula=1;
P2=table[0];
dula=0;
P2=0xFF;
wela=1;
P2=0xFC;
wela=0;
delay(5);
}
void dis30s()
{
uchar shi,ge;
shi=num1/30;
ge=num1%30;
wela=1;
P2=0xFF;
wela=0;
dula=1;
P2=table[shi];
dula=0;
P2=0xFF;
wela=1;
P2=0xFE;
wela=0;
delay(5);
wela=1;
P2=0xFF;
wela=0;
dula=1;
P2=table[ge];
dula=0;
P2=0xFF;
wela=1;
P2=0xFD;
wela=0;
delay(5);
}
void player()
{
if(key1==0&&flag4==0)
{
delay(10);
if(key1==0&&flag4==0)
{
display(1);
TR0=0;
flag1=flag2=0;
flag4=1;
beep();
while(!key1);
}
}
if(key2==0&&flag4==0)
{
delay(10);
if(key2==0&&flag4==0)
{
display(2);
TR0=0;
flag1=flag2=0;
flag4=1;
beep();
while(!key2);
}
}
if(key3==0&&flag4==0)
{
delay(10);
if(key3==0&&flag4==0)
{
display(3);
TR0=0;
flag1=flag2=0;
flag4=1;
beep();
while(!key3);
}
}
if(key4==0&&flag4==0)
{
delay(10);
if(key4==0&&flag4==0)
{
display(4);
TR0=0;
flag1=flag2=0;
flag4=1;
beep();
while(!key4);
}
}
}
void keyscan()
{
if(clear==0&&flag2!=1)
{
delay(10);
if(clear==0&&flag2!=1)
{
while(!clear);
flag1=0;
flag2=0;
flag3=0;
flag4=0;
num=0;
num1=10;
clr();
flag1=1;
}
}
if(flag1==1)
{
if(start==0&&flag3==0)
{
delay(10);
if(start==0&&flag3==0)
{
flag2=1;
flag3=1;
while(!start);
}
}
}
if(flag2==1)
{
TR0=1;
dis30s();
player();
}
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
while(1)
{
keyscan();
}
}
void T0_ser() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==20)
{
num=0;
num1--;
}
if(num1==0)
{
TR0=0;
flag1=0;
flag2=0;
num=0;
num1=30;
clr();
beep();
}
}
|
|