1. 程式人生 > >51微控制器自學--完美的單擊、雙擊、長按、中斷消抖

51微控制器自學--完美的單擊、雙擊、長按、中斷消抖

完整的單擊、雙擊、長按程式碼。

工作原理:當有按鈕第一次按下時,設定第一個標誌An,當按鈕第一次釋放後,進入中斷消抖延時計數,假如在計數範圍內第二次按鈕按下,設定第二標誌Aa,這樣就把單擊和雙擊區分開,而且是可靠的邏輯標誌,長按為大於1秒的判斷.

中斷消抖及按鈕單擊、雙擊、長按處理,雙擊在模擬中穩穩地檢測到執行。

之前釋出的矩陣按鍵也一樣可以採用中斷延時,不過時間應該更短,如50-100毫秒。

本程式碼的巧妙之處在於:

1.只有按鈕按下才執行消抖延時,否則不執行延時

2.巧妙利用消抖延時,同時檢查按鍵雙擊判斷

3.判斷設計精巧,程式碼短小精悍

4.消抖延時時間極易調整

5.多極判斷可擴充套件性良好

6.構思巧妙,易於理解其原理

中斷是一個知識點也是需要謹慎處理的點,處理不好的話,執行起來會看到怪現象,簡單的話當然不會看到什麼影響,不過即使是簡單的數碼管顯示還是按鍵消抖,我也覺得有必要研究如何是最優的在一箇中斷源中處理.