Keil C 中的关于中断程序退出状态问题
答案:1 悬赏:0 手机版
解决时间 2021-04-06 10:02
- 提问者网友:佞臣
- 2021-04-05 23:26
Keil C 中的关于中断程序退出状态问题
最佳答案
- 五星知识达人网友:拜訪者
- 2021-04-05 23:35
你的困惑根源在于对按键按下/抬起瞬间的状态认识不足。
事实上,在按键按下/抬起瞬间,按键端口上会有一个持续抖动的电平(类似于不规则锯齿波,你可以上网查找一下),因此在一段时间之内P2.6上采集的电平将是不断变化的0-1-0序列。你所增加的for(;;)只判断一种电平,所以也并不能起到去抖的作用。
一般较通用的按键处理流程是:当INT0#检测到跳变沿中断时,置一个标志,关闭EX0中断使能;主循环中凭借此标志延时20~100ms去抖(说白了就是避过按键电平不稳定的这段时间),然后重新采集P2.6状态,仍旧是低电平才判定为有效按键变化。
对于连接线较长或者易受干扰的场合,按键处理应增加至少一阶的数字滤波。
事实上,在按键按下/抬起瞬间,按键端口上会有一个持续抖动的电平(类似于不规则锯齿波,你可以上网查找一下),因此在一段时间之内P2.6上采集的电平将是不断变化的0-1-0序列。你所增加的for(;;)只判断一种电平,所以也并不能起到去抖的作用。
一般较通用的按键处理流程是:当INT0#检测到跳变沿中断时,置一个标志,关闭EX0中断使能;主循环中凭借此标志延时20~100ms去抖(说白了就是避过按键电平不稳定的这段时间),然后重新采集P2.6状态,仍旧是低电平才判定为有效按键变化。
对于连接线较长或者易受干扰的场合,按键处理应增加至少一阶的数字滤波。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯