一、思路 基於STM8,按鍵處理,思路是這樣的: 每20ms左右一次去掃描按鍵,用一個key_now記錄當前值,用key_last記錄上次的值,如果key_now和key_last同時有效,則開始進行cnt++。 我設定兩個閾值,LONG_PRESS為100(100*20ms=2s ...
不過我在網上游逛了很久,也看過不少源程序了,沒有發現這種按鍵處理辦法的蹤跡,所以,我將他共享出來,和廣大同僚們共勉。我非常堅信這種按鍵處理辦法的便捷和高效,你可以移植到任何一種嵌入式處理器上面,因為C語言強大的可移植性。 同時,這里面用到了一些分層的思想,在單片機當中也是相當有用的,也是本文的另外一個重點。 對於老鳥,我建議直接看那兩個表達式,然后自己想想就會懂的了,也不需要聽我后面的自吹自擂了, ...
2016-07-11 16:02 1 2430 推薦指數:
一、思路 基於STM8,按鍵處理,思路是這樣的: 每20ms左右一次去掃描按鍵,用一個key_now記錄當前值,用key_last記錄上次的值,如果key_now和key_last同時有效,則開始進行cnt++。 我設定兩個閾值,LONG_PRESS為100(100*20ms=2s ...
:在定時器里面處理獨立按鍵的掃描程序,可以避免上述問題。*/#include "REG52.H"#define ...
IO輸入的姿勢 對於IO輸入采用與IO輸出類似的姿勢 1 使能時鍾 2 初始化IO口 2.1 定義一個初始化結構體 2.2 選擇要初始化的IO口 2.3 ...
一般來說按鍵可以用一個ADC通道來做按鍵的掃描工作,根據各個按鍵上的下拉電阻不同而識別不同種的按鍵狀態,在按鍵數不多且不適合做矩陣鍵盤的時候而且按鍵數又不可忽略的占用過多的IO口這個時候可以使用ADC掃描來做按鍵的掃描。普通情況下一個按鍵可用普通IO口或者ADC端口做按鍵掃描。 如圖,按鍵 ...
在按下按鍵的時候,在閉合和斷開的瞬間有一連串的抖動。 這樣一次按下的動作可能會觸發很多次。 所以,當檢測到按鍵狀態變化時,不是立即去響應動作,而是先等待閉合或斷開穩定后再進行處理。 按鍵消抖可分為硬件消抖和軟件消抖。 消除抖動有軟件和硬件兩種方法。 通常我們用軟件消抖。 最簡單的消抖原理 ...
一般的按鍵輸入軟件接口程序非常簡單,在程序中一旦檢測到按鍵輸入口為低電平(有時可能為高),便采用軟件延時的方 法來進行消抖,然后再次檢測按鍵輸入,如果再次確認為低電平則表示有按鍵按下,轉入執行按鍵處理程序。如果延時后檢測的電平為高電平則放棄本次按鍵檢測, 重新開始一次按鍵檢測過程。在簡單的系統中 ...
KEY_Scan 函數,則是用來掃描這 4 個 IO 口是否有按鍵按下。 KEY_Scan 函數, 支持兩種掃描方式,通過 mode 參數來設置。 當 mode 為 0 的時候, KEY_Scan 函數將不支持連續按, 掃描某個按鍵,該按鍵按下之后必須要松開,才能第二次觸發,否則不 ...
按鍵局部程序分析 當 mode 為 0 的時候, KEY_Scan 函數將不支持連續按,掃描某個按鍵,該按鍵按下之后必須要松開,才能第二次觸發,否則不會再響應這個按鍵,這樣的好處就是可以防止按一次多次觸發,而壞處就是在需要長按的時候就不合適了。 當 mode ...