永发信息网

请教51按键消抖不要延时

答案:2  悬赏:30  手机版
解决时间 2021-03-22 11:49
  • 提问者网友:献世佛
  • 2021-03-22 09:00
请教51按键消抖不要延时
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-03-22 10:36
流程如下:

①定义静态变量作为标志flag=0。
②定时器做一个20ms中断,因为按键消抖一般是20ms。
③在中断中进行按键检测。
进中断时,若检测到按键按下,此时flag=0,令标志flag=1;若flag=1,则可判断有按键按下,flag=0;退出中断。
代码不难,你应该很容易就搞定了。有问题的话再追问。追问我1t 的stc最多定5ms太坑了。。追答可以定时5ms,然后设置一个变量进行计数,当变量为4时,将其制0,并进行按键检测。追问你没明白我的意思
我在中断里进行建扫
然后判断各种标志位然后返回给主函数
我并不是用定时器做一个delay函数追答其实都可以的,一般来说,在这里用定时器的话主要功能就是避免CPU的浪费,用for(;;)来延迟的话,延迟这段期间就做不了其他事情。至于键位扫描放在哪里差距不是很大。
全部回答
  • 1楼网友:梦中风几里
  • 2021-03-22 11:10
每隔3ms进入定时中断并扫描端口,连续10次扫到低电平则判为按下。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯