傳統(tǒng)教科書中講過,無一例外都是采用delay的方法檢測按鍵,但是這種方法有很多缺陷,今天就這一問題說說,小編作為初學者,各位大俠不要見笑啊。
傳統(tǒng)的處理方法:在第一次檢測到有鍵按下時,執(zhí)行一段延時 10ms 的子程序以后再確認該按鍵電平是否能保持閉合狀態(tài)的電平,如果保持閉合狀態(tài)電平,則確認為真正有鍵按下,從而消除抖動的影響。
個人感覺有兩點弊端:
1. 傳統(tǒng)的處理方法執(zhí)行10ms 的延時子程序,會降低程序的實時性。
2. 傳統(tǒng)的處理方法一次按鍵動作的確認,只檢測兩次,在高抗干擾環(huán)境下的會有按鍵的誤動作。
提出一些建議,大家看看是否可行呢:
1. 建議彈跳時間為 100ms 才可有效通過 EFT 雜訊認證。
2. 建議主程序中連續(xù)檢查 100ms 的穩(wěn)定低電平才可認定按鍵按下成立。
3. 相同道理連續(xù)檢查 100ms 高電平才可認定按鍵彈起。
4. 為了保證 MCU 的執(zhí)行效率,按鍵的檢測盡量不要使用 Delay 的方式,可以考慮采用輪詢檢測和計時器配合的方式進行。
方法如下:
在發(fā)現(xiàn)低電平后,我們每一個循環(huán)(時基)去讀取一次電平,并與上次進行比較,若是相同則計數(shù)器加 1,直至達到足夠的次數(shù)就進行處理,否則計數(shù)器清零,重新開始。