1. 程式人生 > >微控制器--按鍵定時器檢測:短按、長按

微控制器--按鍵定時器檢測:短按、長按

 通過使用定時器計數的方法來分辨按鍵的:短按、長按

  1. 檢測到引腳被拉低:按鍵按下為低電平,沒有按下為高電平
  2. 延時10毫秒:濾波
  3. 引腳還是被拉低:確定按鍵被按下
  4. 設定按鍵按下標誌
  5. 開啟定時器,開始計數:定時器中有一個全域性變數用於記錄計數值
  6. 直到引腳被拉高:按鍵被釋放將為高電平
  7. 關閉定時器
  8. 檢測按鍵按下標誌
  9. 檢測定時器按鍵檢測時間全域性變數是否大於某個值,一般為200ms
  10. 大於則為長按,否則為短按
uint8_t ylf_key_scan(void)
{
	static uint8_t press_flag;

	if
(!KEY_PIN) { scs_delay_ms(10); if (!KEY_PIN) { press_flag = 1; TR0 = 1; // 定時器0開始計數 while(!KEY_PIN); TR0 = 0; // 定時器0計數結束 } } if (press_flag) { if (KEY_COUNT >= 200) { KEY_COUNT = 0; press_flag = 0; return KEY_LONG_PRESSED; } else { KEY_COUNT =
0; press_flag = 0; return KEY_SINGLE_PRESSED; } } return KEY_DEFAULT_STATUS; }