关于单片机按键问题性能提升总结
最近看了一本书《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 ; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
上一篇:C语言实现电子时钟程序
栏 目:C语言
下一篇:C语言实现医院管理系统
本文标题:关于单片机按键问题性能提升总结
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/634.html
您可能感兴趣的文章
- 01-10关于C语言函数strstr()的分析以及实现
- 01-10关于C语言除0引发的思考
- 01-10关于c语言的一个小bug详解
- 01-10关于C/C++中static关键字的作用总结
- 01-10关于C++中虚拟继承的一些总结分析
- 01-10CStdioFile的用法详细解析
- 01-10关于C++中的友元函数的一些总结
- 01-10关于STL中vector容器的一些总结
- 01-10关于STL中list容器的一些总结
- 01-10关于STL中的map容器的一些总结
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10delphi制作wav文件的方法
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 04-02jquery与jsp,用jquery
- 01-10SublimeText编译C开发环境设置
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10C#中split用法实例总结