最近看了一本書《8051單片機創新教程》,這本書比大學課本寫得好,在大學的課本中,我們常見的按鍵掃描程序如下:
unsinged char KeyScan(void){ unsigned char KeyValue=0; if(KEY_IO != 0xFF) //檢測到有按鍵按下 { DelayNms(20); //延時 20 毫秒(嚴重影響單片機的運行效率) if(KEY_IO != 0xFF)//確認按鍵按下 { switch(KEY_IO) { case 0xFE: KeyValue=1;break; case 0xFD: KeyValue=2;break; default : KeyValue=0;break; } } } return KeyValue;}
在現實中,論壇上看到以下代碼,我們不妨這樣,沒有用延時,運行效率大大提高!單片機實時性能顯著提高!
//讀取按鍵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 ;}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答