#include<reg52.h>
#define uchar unsigned char
sbit d0=P1^0; //定义KEY
sbit start=P1^1; //开始开关
sbit d1=P2^1; //KEY指示灯
sbit d2=P2^0; //NG指示灯
sbit d3=P2^2; //GOOD指示灯
bit flag;
uchar tt=0;
uchar c1=0;
void delay_ms(unsigned int ms) //1ms延时函数
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
void scan_key() //按键检测函数
{
while(d0==0)
{
delay_ms(50);
if(d0==0)
{
d1=0;
TR0=0;
while(d0==0);
d1=1;
c1++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
tt=0;
}
}
}
void judge_key() //按键次数检测函数
{
if(c1==2)
{
d3=0;
flag=0;
TR0=0;
tt=0;
}
}
void judge_start()
{
while(start==0)
{
delay_ms(50);
if(start==0)
{
c1=0;
d1=1;
start=1;
d2=1;
d3=1;
tt=0;
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
flag=1;
}
}
}
void main()
{
while(1)
{
judge_start();
while(flag)
{
scan_key();
judge_key();
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==80)
{
flag=0;
d2=0;
TR0=0;
d3=1;
flag=0;
c1=0;
}
} |