if(key==0)
{
delay_ms(10):
if(key==0)
{要实现的功能}
}
这是软件延迟,当看到按键按下后等待10ms,再次看key是否按下,这样就可以起到消抖的作用,PS:delay_ms(int a);是一个延迟函数。
这样做感觉不是很灵敏啊,经常出错。我在书上看到的事这样做的:
if(k1==0){
Debouncer(); //按键按下即进入去抖函数
实现的功能
while(k1!=1);
Debouncer(); //按键松开时进入去抖函数
}
这样做好像不好,就是while(K1!=1)会一直占用cpu,如果按键下去一直不松手的话。
正在找更好的方法,共勉 |