unsigned char status=0;//按键值
void main(){
TMOD=0x00;
TH1=(65536-8000)/256;
TL1=(65536-8000)%256;
ET1=1;
TR1 = 0;
EA = 1;//定时器1初始化8ms消抖
while(1){
TR1=P4<0xff;//按键按下消抖判断跟误触清除
if(P4==0xff&&status){//达成单击条件进入
//P1=status;
status = 0;//清除
}
}
}
void Timer1_()interrupt 3{
if(P4<0xff)
status = ~P4;//按键真按下赋值
}
这是用的定时器1来实现消抖跟获取值的写法,不能说是最简单的,因为定时器这种操作比较简单我才这么认为的,也可以参考我上一篇的按键写法。