关于单片机按键问题总结
2016-04-07 09:38
351 查看
最近看了一本书《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 ; }
相关文章推荐
- spring注解---@Resource和@Autowired
- iOS中定时器NSTimer的开启与关闭
- Information Acquisition
- Android开源项目第一篇
- C++文件打开方式详解链接
- 张瑞敏:正确路线确定后,干部就是决定因素
- Objective-C 语言特性
- 快排代码
- 逻辑与物理分页
- 【HDU2586】How far away ?【离线】【TarjanLCA】
- 3.2.7 INET_PROTO_INFO结构体:记录网络协议
- 利用history.replaceState及location.hash记录滚动条位置
- C++实验3 - 个人所得税计算器
- 路径问题
- 在eclipse部署静态web项目
- 在eclipse部署静态web项目
- Python 进阶 —— itertools
- iOS中关于NSTimer使用知多少
- 第三次实验
- 3.2.6 htable.c:哈希表双向链表