资料介绍
按键总结刚参加工作的时候,对比学校里和同事的按键处理函数,发现总是不尽如人意,
有以下几点:
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次阅读
下载排行
本周
- 1Keysight B1500A 半导体器件分析仪用户手册、说明书 (中文)
- 19.00 MB | 4次下载 | 免费
- 2使用TL431设计电源
- 0.67 MB | 2次下载 | 免费
- 3BT134双向可控硅手册
- 1.74 MB | 2次下载 | 1 积分
- 4一种新型高效率的服务器电源系统
- 0.85 MB | 1次下载 | 1 积分
- 5LabVIEW环形控件
- 0.01 MB | 1次下载 | 1 积分
- 6PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 751单片机核心板原理图
- 0.12 MB | 1次下载 | 5 积分
- 8BP2879DB支持调光调灭的非隔离低 PF LED 驱动器
- 1.44 MB | 1次下载 | 免费
本月
- 1开关电源设计原理手册
- 1.83 MB | 52次下载 | 免费
- 2FS5080E 5V升压充电两串锂电池充电管理IC中文手册
- 8.45 MB | 23次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 12次下载 | 免费
- 5ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 11次下载 | 1 积分
- 6TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 7STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 8基于MSP430FR6043的超声波气体流量计快速入门指南
- 2.26MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多