|
发表于 2010-1-25 21:45:23
|
显示全部楼层
回复【4楼】cf753951 风驰骏马
比如开机(OFF到ON)时,如果长按(比如1-2S)的话,开机后,KIYIN检测到中断信号,又让HOLD为低,导致关机(OFF到ON)了
关机后(如果按键还按着),之后又从OFF到ON,如此反复。
所以为了避免这种情况,可以通过在MCU上电后,使HOLD信号为高的程序段后面 添加1-2S的延时,和按键消抖的作用一样
防止反复的开机和关机导致的不确定。
-----------------------------------------------------------------------
這個就是軟體處理上的技巧了,
軟體處理不同的人有不同的處理方法,
比如我....按鍵的抓取,通常每個按鍵我會在RAM中設定一個Count,
在Timer中斷時去抓取按鍵狀態,按鍵on時Count加1,按鍵off時Count清零,
按鍵的處理程式在Count計數到一定值時才會承認有按鍵輸入,
這樣的按鍵處理不會有按鍵彈跳的問題(前題是Count的承認值要大於按鍵的彈跳時間)
而且一個按鍵可以做到多功能,
這樣的按鍵處理我已經運用20年左右了,
缺點是...會佔比較大的RAM資源(每個按鍵至少佔1byte的RAM)
市面上的吃角子老虎(台灣這邊的瑪莉檯之類的)按鍵處理大多都是這個原理,
比如....
按一下時+1
按住1秒時每0.5秒+10
按住3秒時每0.5秒+100 |
|