![]() |
發布時間: 2021-8-20 16:39
正文摘要:電路圖如下: MCU采用89C52單片機,晶振12MHZ。 1、沒有消除抖動的原始代碼: #include <REGX52.H> #include <intrins.h> sbit KeyValue=P3^7; unsigned char code segment[]={0xc0,0xf9,0xa4,0xb ... |
if(!key) while(1) { //如果有顯示程序寫一遍在這里 if(key) { //按鍵要實現的功能 break; } } 這樣寫只能按一次實現一次 |
主意不錯,站位留存一下! |
這樣很難嗎? if(K5 == 0) { DelayM(20); q = ~q; //標志位取反 if(q){kai_numl = kai_numl | 1;} else { kai_numl = kai_numl&0;} if(q){BLK = BLK | 1;} else {BLK= BLK & 0;} while(K5 == 0); } |
挺好的啊,我自己也是這樣使用的 |
其實這個就是狀態機 |
原理分析到位!多謝分享 |
一般來說都是延時5MS,小程序上用不了多少 |
我記的網上有人利用標志位進行消抖,用延時的話有點困難 |
還可以搞兩個for嵌套循環! 最外層記錄按了多少次,用來處理多次連續按鍵。內層在規定時間內有按鍵動作記為真,超過規定時間記為假,這樣可以高效消抖![]() |