一个按键的状态变化,称为一个事件。
假定在一个实时系统中发生了一个按键事件,按键中断都被触发了,难道还要在中断处理程序中花费几十ms来确认它的正确性?
LZ真是创世纪的发现:打破40~60年以来世界教材上讲述的按键检测(实际应用技术)方法。
如今真是什么人都想造个“轰动效应”。
中国的教科书确实没有讲清键盘扫描延时机制,去看看国外教材!看完了,弄懂弄清楚了以后再来发表认知。
再看看过去关于键盘延时的争论:开开眼
ayb_ice :“按键扫描延时是为了防止一次按键多次响应。”
这是最简洁明了的说明。假定一个按键关联触发的响应处理程序的运行开销是20ms, 或者10ms/30ms/50ms, 或者100ms,那么当系统检测到一个按键按下(电平状态变化)时,相关处理程序就可以立即触发执行,——不需要任何延时!根本不可能是什么“干扰”,“虚假信号”之类,国外教材上从来没有这种说法。全是中国教授的错误理解,结果写到教材上,误导一代一代学生。
很简单的证明方法:拿一个存储型示波器,接到按键输入端,连续观测一下,有没有干扰脉冲?不可能有! 有位高手说过了:“干扰脉冲没那么大能量!”—— 一个按键要把高电平拉低,至少需要1ma电流,干扰脉冲是电压形式,没有功率,不可能产生电流。这是电路基本原理吧。
所以,第一次检测到按键状态变化时,“它必然是一个真实事件!”相关响应程序可以立即运行。根本不需要延时确认。“没个假的。”
实际物理过程:当按键还在不稳定阶段抖动时,处理程序已经运行。
要防止的,实际是假设处理程序开销在按键抖动时间之内执行完毕,那么第二次扫描此按键时,它还没有稳定下来,仍在抖动,结果可能这时检测到“释放电平”,这是真正的“假信号”。是不希望的。——这才是延时机制的实质。
要看国外教材上怎么讲的,可以推荐一本。现在懒得找啦。 |