最近看了一本書《8051單片機創新教程》,這本書比大學課本寫得好,在大學的課本中,我們常見的按鍵掃描程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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; } |
在現實中,論壇上看到以下代碼,我們不妨這樣,沒有用延時,運行效率大大提高!單片機實時性能顯著提高!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//讀取按鍵 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 ; } |
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/morixinguan/article/details/51082630