#include<reg52.h>
#define uc unsigned char
sbit key = P3^1;
void delay(uc c)
{
uc a,b;
for(;c>0;c--)
for(a=38;a>0;a--)
for(b=130;b>0;b--);
}
void delay1(uc c1)
{
uc a1,b1;
for(;c1>0;c1--)
{
for(a1=38;a1>0;a1--)
for(b1=130;b1>0;b1--);
if(key == 0)
return;
}
}
uc state() //长按返回1,单击返回2,双击返回3
{
uc x=0;
uc i=0,j=0;
while(key == 0 && i<8)
{
delay(5);
i++;
}
if(i>=8)
x=1;
else
{
while(key==1 && j<8)
{
j++;
delay(5);
}
if(key==0)
x=3;
if(j>=8)
x=2;
}
return x;
}
void main()
{
uc x,k=0x01;
while(1)
{
if(key == 0)
{
x=state();
while(x==1)
{
delay(1);
while(key==0);
delay(1);
P2=~k;
k<<=1;
if(k==0) k=0x01;
delay1(20);
if(key==0)
{
x=state(); k=0x01;
break;
}
}
while(x==2)
{
P2=0xff;
if(key==0)
{
x=state();
break;
}
}
while(x==3)
{
P2=0;
if(key==0)
{
x=state();
break;
}
}
}
}
}