資料介紹
按鍵總結剛參加工作的時候,對比學校里和同事的按鍵處理函數,發現總是不盡如人意,
有以下幾點:
1. 消抖復雜,效率低。很多人直接在電平判斷后使用delay()函數,進行消抖,
耽誤時間;有人在按鍵電平中斷中消抖,導致其他的中斷,比如串口、定時等
反應很慢,不適合做實時系統;
2. 特殊功能按鍵的處理麻煩。使用簡單電平判斷的按鍵掃描,在需要長按響應、
復合按鍵響應、復合按鍵長按響應的時候,需要增加很多的標志位,反復使用
if..else判斷,有時候把自個都搞亂了。
3. 不便于移植和修改。使用以上兩點編寫的函數,如果用在直接端口按鍵上的,
那么在行列掃描按鍵的時候,就很難適應。導致每個項目都要更改一次。
?
想了很久之后,我結合PC的鍵盤處理方法,編寫了自己的按鍵函數,經過幾次修改,
定了下來。這十幾年來,一直在用,方便移植,而且比較清晰。
——至少我自己這么覺得。
?
它有以下幾個特點:
1. 按鍵掃描和取值分開。
? ? 在中斷中(一般10ms),反復調用keyScan()進行按鍵掃描(包括消抖)。
? ? 消抖之后的按鍵值不返回,作為消息放到全局變量中;
? ? 在需要判斷的地方使用getKeyValue()獲取當前的鍵值,進行處理。
?
2. 每一個按鍵,都有單獨的標志位和計時變量。
? ? 消抖計時:
? ? 如果按鍵按下,每調用一次10ms中斷,gucKeyOkTimer增加;
? ? gucKeyOkTimer超過消抖的閥值(我一般10次,即100ms),則確認有按鍵了。
? ? 任何一次掃描到按鍵沒有按下,gucKeyOkTimer清空;
?
? ? 標志位:
? ? 如果一直按著(通過按鍵電平判斷),會有gfOkPressing;
? ? 如果按下過一次,需要響應,會有gfOkNeedAck;
?
? ? 復合按鍵的響應:
? ? 因為每個按鍵,包括復合按鍵都有自己的標志位和計時變量,可以跟物理按鍵的
? ? 處理方法相同。只是消抖的條件,不是電平的判斷,而是物理按鍵的pressing標志。
?
3. 我沒有使用怪癖詭異的編程方法。有很多取巧的方法可使實現按鍵的掃描,甚至有
人寫了三行代碼就實現消抖?!覀€人不喜歡這樣的程序風格。我喜歡思路清晰的編程方法,
?
如果你跟我的思路相同,也遇見過這樣的困惑,可以考慮我的按鍵掃描方法。
?
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 十几种格力空调故障代码详解0次下载
- 十几款电子类计算软件资料下载15次下载
- 按键点亮LED,按一下亮,按一下灭14次下载
- Esp8266 Node Mcu 一直乱码的问题详解41次下载
- 单片机处理按键长按的三种解决方法9次下载
- MCU实战经验:多种的按键处理14次下载
- 单片机的按键处理框架资料和函数详细说明1次下载
- 使用状态机的按键消抖处理方法电子钟程序免费下载8次下载
- 51单片机独立按键外设的传统法检测详细资料说明0次下载
- PLC的入门教程之简单的了解一下PLC10次下载
- 独立按键的原理及编程方法资料说明21次下载
- 如何进行Linux系统下的分区详细方法规格说明2次下载
- 说说我的十几年电源设计之路0次下载
- 多抽样率数字信号处理及其FPGA实现57次下载
- 怎样处理潮湿敏感元器件33次下载
- 点烟器充电器可以一直插着吗2163次阅读
- 为什么要进行按键消抖?按键抖动的原理 按键消抖的方法24363次阅读
- Linux下常见的十几款CPU监控工具2880次阅读
- Pod一直处于Pending状态?什么是Pod拓扑约束?1664次阅读
- 盘点一下CST电磁仿真软件的求解器7457次阅读
- 单片机按键去抖动的方法7573次阅读
- 认识一下几个常用的门级电路2678次阅读
- 按键消抖的软件和硬件方法15512次阅读
- 在ubuntu上安装vivado2021.1时一直卡在最后一步怎么办6167次阅读
- 电磁炉加热一下就停一下什么原因39644次阅读
- 基于微处理器LPC2214和GPS接收器实现车载导航终端的设计4332次阅读
- WiFi一直显示连接的原因38294次阅读
- 烟雾报警器30秒滴一下的原因 烟雾报警器一直响怎么解除227272次阅读
- 简要介绍一下Python-UNO的使用方法9364次阅读
- Linux - 你看不到,却已一统天下1942次阅读
下載排行
本周
- 1珈港科技JC100安全芯片簡介
- 466.19 KB | 1次下載 | 免費
- 2斯丹麥德電子高壓繼電器系列-切換電壓可高達10kVDC
- 1.48 MB | 次下載 | 免費
- 3MS9280 10bit、35MSPS模數轉換器數據手冊
- 0.57 MB | 次下載 | 1 積分
- 4MS5135N 雙通道、12 位、125MSPS、串行 LVDS 1.8V模數轉換器數據手冊
- 0.40 MB | 次下載 | 3 積分
- 5JH-PXIe6352型三路DVI視頻源板技術手冊
- 1.31 MB | 次下載 | 免費
- 6UWB3000F00-X1室內外定位測距模塊規格書
- 1.48 MB | 次下載 | 免費
- 7PC2026Q 雙通道20V 6A同步降壓穩壓器數據手冊
- 1.46 MB | 次下載 | 免費
- 8AD設計DDR3時等長設計技巧
- 0.89 MB | 次下載 | 3 積分
本月
- 1常用電子元器件集錦
- 1.72 MB | 24496次下載 | 免費
- 2三相逆變主電路的原理圖和PCB資料合集免費下載
- 27.35 MB | 113次下載 | 1 積分
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 19次下載 | 5 積分
- 4PC2456高壓浪涌抑制器控制器數據手冊
- 3.03 MB | 14次下載 | 免費
- 5PC2464具理想二極管的浪涌抑制控制器數據手冊
- 4.42 MB | 9次下載 | 免費
- 6ssd1306單片 CMOS OLED/PLED 驅動芯片中文手冊
- 1.66 MB | 8次下載 | 1 積分
- 7PC2466高電壓浪涌抑制器數據手冊
- 3.37 MB | 8次下載 | 免費
- 8EMC電路設計工程師必備的EMC基礎
- 0.42 MB | 7次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935132次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191401次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183345次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81593次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73816次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65990次下載 | 10 積分
評論