资料介绍
按键总结刚参加工作的时候,对比学校里和同事的按键处理函数,发现总是不尽如人意,
有以下几点:
1. 消抖复杂,效率低。很多人直接在电平判断后使用delay()函数,进行消抖,
耽误时间;有人在按键电平中断中消抖,导致其他的中断,比如串口、定时等
反应很慢,不适合做实时系统;
2. 特殊功能按键的处理麻烦。使用简单电平判断的按键扫描,在需要长按响应、
复合按键响应、复合按键长按响应的时候,需要增加很多的标志位,反复使用
if..else判断,有时候把自个都搞乱了。
3. 不便于移植和修改。使用以上两点编写的函数,如果用在直接端口按键上的,
那么在行列扫描按键的时候,就很难适应。导致每个项目都要更改一次。
想了很久之后,我结合PC的键盘处理方法,编写了自己的按键函数,经过几次修改,
定了下来。这十几年来,一直在用,方便移植,而且比较清晰。
——至少我自己这么觉得。
它有以下几个特点:
1. 按键扫描和取值分开。
在中断中(一般10ms),反复调用keyScan()进行按键扫描(包括消抖)。
消抖之后的按键值不返回,作为消息放到全局变量中;
在需要判断的地方使用getKeyValue()获取当前的键值,进行处理。
2. 每一个按键,都有单独的标志位和计时变量。
消抖计时:
如果按键按下,每调用一次10ms中断,gucKeyOkTimer增加;
gucKeyOkTimer超过消抖的阀值(我一般10次,即100ms),则确认有按键了。
任何一次扫描到按键没有按下,gucKeyOkTimer清空;
标志位:
如果一直按着(通过按键电平判断),会有gfOkPressing;
如果按下过一次,需要响应,会有gfOkNeedAck;
复合按键的响应:
因为每个按键,包括复合按键都有自己的标志位和计时变量,可以跟物理按键的
处理方法相同。只是消抖的条件,不是电平的判断,而是物理按键的pressing标志。
3. 我没有使用怪癖诡异的编程方法。有很多取巧的方法可使实现按键的扫描,甚至有
人写了三行代码就实现消抖。——我个人不喜欢这样的程序风格。我喜欢思路清晰的编程方法,
如果你跟我的思路相同,也遇见过这样的困惑,可以考虑我的按键扫描方法。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 十几款电子类计算软件资料下载 14次下载
- 按键点亮LED,按一下亮,按一下灭
- Esp8266 Node Mcu 一直乱码的问题详解
- 单片机处理按键长按的三种解决方法
- MCU实战经验:多种的按键处理
- 单片机的按键处理框架资料和函数详细说明
- 51单片机的独立按键的检测的资料和程序免费下载
- 使用状态机的按键消抖处理方法电子钟程序免费下载
- 51单片机独立按键外设的传统法检测详细资料说明
- PLC的入门教程之简单的了解一下PLC
- 独立按键的原理及编程方法资料说明 20次下载
- 如何进行Linux系统下的分区详细方法规格说明 2次下载
- 说说我的十几年电源设计之路 0次下载
- 多抽样率数字信号处理及其FPGA实现 57次下载
- 怎样处理潮湿敏感元器件
- 为什么要进行按键消抖?按键抖动的原理 按键消抖的方法 1.4w次阅读
- Linux下常见的十几款CPU监控工具 2264次阅读
- Pod一直处于Pending状态?什么是Pod拓扑约束? 1011次阅读
- 盘点一下CST电磁仿真软件的求解器 5345次阅读
- 单片机按键去抖动的方法 3811次阅读
- 按键消抖的软件和硬件方法 1.3w次阅读
- 在ubuntu上安装vivado2021.1时一直卡在最后一步怎么办 5345次阅读
- 电磁炉加热一下就停一下什么原因 3.7w次阅读
- 基于微处理器LPC2214和GPS接收器实现车载导航终端的设计 3705次阅读
- WiFi一直显示连接的原因 3.4w次阅读
- 全球尺寸领先的防水型温度压力传感器 2600次阅读
- 量子效应为什么会一直存在? 6057次阅读
- 烟雾报警器30秒滴一下的原因 烟雾报警器一直响怎么解除 22.2w次阅读
- 简要介绍一下Python-UNO的使用方法 8163次阅读
- Linux - 你看不到,却已一统天下 1905次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多