關(guān)于單片機(jī)按鍵問題性能提升總結(jié)
最近看了一本書《8051單片機(jī)創(chuàng)新教程》,這本書比大學(xué)課本寫得好,在大學(xué)的課本中,我們常見的按鍵掃描程序如下:
unsinged char KeyScan(void) { unsigned char KeyValue=0; if(KEY_IO != 0xFF) //檢測到有按鍵按下 { DelayNms(20); //延時 20 毫秒(嚴(yán)重影響單片機(jī)的運行效率) if(KEY_IO != 0xFF)//確認(rèn)按鍵按下 { switch(KEY_IO) { case 0xFE: KeyValue=1;break; case 0xFD: KeyValue=2;break; default : KeyValue=0;break; } } } return KeyValue; }
在現(xiàn)實中,論壇上看到以下代碼,我們不妨這樣,沒有用延時,運行效率大大提高!單片機(jī)實時性能顯著提高!
//讀取按鍵 uchar read_key() { static int Key_on_off = 0 ;//按鍵自鎖變量 uchar num , temp ; num = P2 ; num &= 0xf0 ; //將低四位清0 if(num != 0xf0) { if(Key_on_off == 0) { Key_on_off = 1 ; switch(num) { //返回按鍵的編碼 case 0xe0 : temp = 1 ; break ; case 0xd0 : temp = 2 ; break ; case 0xb0 : temp = 3 ; break ; case 0x70 : temp = 4 ; break ; } } } else Key_on_off = 0 ; return temp ; }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- C語言宏定義結(jié)合全局變量的方法實現(xiàn)單片機(jī)串口透傳模式
- android實現(xiàn)手機(jī)與單片機(jī)藍(lán)牙模塊通信
- Android Socket 線程連接openwrt與arduino單片機(jī)串口雙向通信的實例解析
- Android與單片機(jī)通信常用數(shù)據(jù)轉(zhuǎn)換方法總結(jié)
- Android單片機(jī)與藍(lán)牙模塊通信實例代碼
- 使用UART與PC通信實現(xiàn)msp430g2553單片機(jī)超聲波測距示例
- c#實現(xiàn)51單片機(jī)頻率計的代碼分享(數(shù)字頻率計設(shè)計)
相關(guān)文章
輕松實現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換
這篇文章主要介紹了輕松實現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11C++11中隱式類型轉(zhuǎn)換的實現(xiàn)示例
C++類型轉(zhuǎn)換分為:隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換,本文主要介紹了C++11中隱式類型轉(zhuǎn)換的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-06-06C語言數(shù)據(jù)結(jié)構(gòu)之單鏈表的查找和建立
鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將和大家一起聊聊C語言中單鏈表的查找和建立,感興趣的可以學(xué)習(xí)一下2022-09-09