長按與短按的區別只是加上乙個適當的延時然後再去判斷引腳狀態。
定義:
#define keydir p2dir
#define keyin p2in
#define keyifg p2ifg
#define keyie p2ie
#define keyies p2ies
#define keyren p2ren
#define s1 bit0
extern unsigned char key_key;
在中斷中處理長按與短按:
#pragma vector=port2_vector //宣告中斷向量位址
__interrupt void gpiointhandler(void)}}
if(cv==0)//
長按狀態的標誌為0時
}keyifg &=~(s1);//中斷標誌位清零
}
基於狀態機的微控制器按鍵短按長按功能的實現
發表於 2017 12 28 08 43 46 控制 mcu 關注在自己在科研實踐和對學生教學中發現,現在微控制器學習中對於按鍵處理的方法都是 檢測按鍵 延時消抖 按鍵執行 等待釋放,整個按鍵處理的程式中大量出現 delay 1ms 5 和 while key 這樣的語句,這明顯是在給自己找麻煩,延...
同乙個按鍵短按與長按的區別觸發
include reg52.h define const voice short 20 蜂鳴器短叫的持續時間 define const voice long 140 蜂鳴器長叫的持續時間 define const key time1 short1 20 短按的按鍵去抖動延時時間 define con...
基於MSP430F5529的按鍵消抖問題
注 板子 msp430f5529 開發環境 ccsv5 知道了抖動產生的原因,我們就可以思考解決的辦法了。很顯然如果中斷的反應不要那麼快,是不是就可以避免這個問題了呢?那麼有乙個辦法就是把中斷程式的執行時間延長,讓中斷執行的慢一點,這樣在第一次觸發中斷後cpu去執行中斷程式,當抖動引發的中斷請求發出...