最近看了一本书《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