久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
分享一下十幾年我一直使用的按鍵處理方法
[打印本頁]
作者:
中科網
時間:
2013-11-4 15:33
標題:
分享一下十幾年我一直使用的按鍵處理方法
分享一下十幾年我一直使用的按鍵處理方法
看見大家發了那么多按鍵的處理方法,我也發一個。
剛參加工作的時候,對比學校里和同事的按鍵處理函數,發現總是不盡如人意,
有以下幾點:
1. 消抖復雜,效率低。很多人直接在電平判斷后使用delay()函數,進行消抖,
耽誤時間;有人在按鍵電平中斷中消抖,導致其他的中斷,比如串口、定時等
反應很慢,不適合做實時系統;
2. 特殊功能按鍵的處理麻煩。使用簡單電平判斷的按鍵掃描,在需要長按響應、
復合按鍵響應、復合按鍵長按響應的時候,需要增加很多的標志位,反復使用
if..else判斷,有時候把自個都搞亂了。
3. 不便于移植和修改。使用以上兩點編寫的函數,如果用在直接端口按鍵上的,
那么在行列掃描按鍵的時候,就很難適應。導致每個項目都要更改一次。
想了很久之后,我結合PC的鍵盤處理方法,編寫了自己的按鍵函數,經過幾次修改,
定了下來。這十幾年來,一直在用,方便移植,而且比較清晰。
——至少我自己這么覺得。
它有以下幾個特點:
1. 按鍵掃描和取值分開。
在中斷中(一般10ms),反復調用keyScan()進行按鍵掃描(包括消抖)。
消抖之后的按鍵值不返回,作為消息放到全局變量中;
在需要判斷的地方使用getKeyValue()獲取當前的鍵值,進行處理。
2. 每一個按鍵,都有單獨的標志位和計時變量。
消抖計時:
如果按鍵按下,每調用一次10ms中斷,gucKeyOkTimer增加;
gucKeyOkTimer超過消抖的閥值(我一般10次,即100ms),則確認有按鍵了。
任何一次掃描到按鍵沒有按下,gucKeyOkTimer清空;
標志位:
如果一直按著(通過按鍵電平判斷),會有gfOkPressing;
如果按下過一次,需要響應,會有gfOkNeedAck;
復合按鍵的響應:
因為每個按鍵,包括復合按鍵都有自己的標志位和計時變量,可以跟物理按鍵的
處理方法相同。只是消抖的條件,不是電平的判斷,而是物理按鍵的pressing標志。
3. 我沒有使用怪癖詭異的編程方法。有很多取巧的方法可使實現按鍵的掃描,甚至有
人寫了三行代碼就實現消抖。——我個人不喜歡這樣的程序風格。我喜歡思路清晰的編程方法,
易于維護和移植。當然代價就是多了一些ROM和RAM占用,但我覺得時間和代碼的質量更重要。
如果你跟我的思路相同,也遇見過這樣的困惑,可以考慮我的按鍵掃描方法
作者:
whiskycheung
時間:
2014-1-5 10:46
謝謝樓主
作者:
liaolinhui
時間:
2014-1-5 20:13
看看再說
作者:
雕亦傾心
時間:
2014-1-5 22:28
看看再說~!
作者:
admin2013
時間:
2014-1-9 20:15
謝謝,高手出手,嘿嘿
作者:
m182892
時間:
2014-2-20 09:49
謝謝分享
作者:
xxxevery
時間:
2014-2-21 15:37
看看寫的如何
作者:
sdlkfjlkj
時間:
2014-2-23 19:26
謝謝樓主
作者:
wgh008
時間:
2014-2-24 22:21
收藏學習
作者:
wgh008
時間:
2014-2-24 22:28
沒看見樓主運用什么語句,只看見樓主文檔里介紹他的方法,呵呵。
作者:
jingsheng_cao
時間:
2014-4-18 09:19
真心不錯,很好。
作者:
盛世游龍
時間:
2014-4-23 23:52
謝謝樓主分享!
作者:
zrl
時間:
2014-4-27 21:34
謝謝樓主分享!
作者:
yxz1140
時間:
2014-4-28 19:45
謝謝分享!
作者:
a651738901
時間:
2014-4-28 21:18
謝謝樓主慷慨,學習了!
作者:
liang1981
時間:
2014-5-15 19:57
看看如何寫的
作者:
xzxlove
時間:
2014-5-16 10:46
樓主熱心腸
作者:
xzxlove
時間:
2014-5-16 10:52
看了下,跟我的有異曲同工之妙,其實個人感覺,用定時器產生一個15ms左右的時間,作為消抖使用,如果程序不是特別大,將按鍵掃描程序放入主循環還是不錯的。大家應該都知道,程序中最好不要用延delay()函數的。
作者:
szsurfing
時間:
2014-5-16 11:38
下來學習下. 謝謝先
作者:
颶風de菜菜
時間:
2014-6-9 15:49
多謝樓主分享
作者:
zmkgzsz2014
時間:
2014-9-7 10:31
學習了。
作者:
平安2006916
時間:
2014-9-7 10:43
謝謝樓主分享 新人下來研究學習
作者:
lzzgg834483370
時間:
2014-9-8 12:02
很好額 受教了
作者:
mcaeg
時間:
2014-9-14 20:18
謝謝.學習學習
作者:
yzmmdy
時間:
2014-9-16 19:53
有個實例最好了
作者:
一人心
時間:
2014-10-5 01:25
留個記號,支持下
作者:
yc21
時間:
2014-10-5 20:28
參考下,自己總是搞不定按鍵處理
作者:
qzsulin
時間:
2014-10-8 18:28
沒有給代碼啊
作者:
永遠18
時間:
2014-10-13 16:43
感謝分享啊啊
作者:
jinanyuanyue
時間:
2014-10-13 19:13
謝謝,先下載收藏
作者:
zsshd
時間:
2014-10-17 09:02
謝謝樓主。
作者:
ganchao945
時間:
2014-10-18 21:02
感謝。。。。
作者:
tjj163
時間:
2014-10-20 16:48
學習學習
作者:
blj178
時間:
2014-10-20 19:30
謝謝樓主
作者:
hjlost
時間:
2014-10-24 14:11
掘墓高手,專挖古墓,一挖一個坑,坑坑見墓。。
作者:
北漂的二極管
時間:
2014-10-29 14:22
看看再說
作者:
xiuyueyuan2013
時間:
2014-11-5 12:29
下載了,看看
作者:
心宇(語)
時間:
2014-11-7 11:07
謝謝樓主
作者:
娃娃魚翅膀
時間:
2014-11-9 13:19
謝謝分享
作者:
lishaoping1984
時間:
2014-11-9 20:04
一直在找這方面的資料
作者:
liwanxi
時間:
2014-11-9 21:05
沒錢下,收下先.
作者:
本本12
時間:
2014-11-14 15:16
看看再說
作者:
zgs660429
時間:
2014-11-18 11:11
不錯,學習一下。
作者:
dzljp
時間:
2014-11-19 21:47
謝謝樓主分享
作者:
2796277453
時間:
2014-11-20 22:10
謝謝樓主。。
作者:
zjf110
時間:
2014-11-25 01:33
看看再說~!
作者:
zjf110
時間:
2014-11-25 01:47
感謝樓主分享
作者:
zsshd
時間:
2014-12-17 07:13
和大家一樣,我一直在找按鍵處理方面的資料。特別感謝樓主的慷慨!謝謝!!
作者:
xiao_yp2014
時間:
2014-12-17 08:21
沒有代碼呢?請上一個吧。
作者:
zsshd
時間:
2014-12-17 11:13
根據樓主的方法,程序一直沒有調試成功,主要自己入門短。大家有成功的嗎?能再指點一二嗎?
作者:
zgs660429
時間:
2014-12-17 22:46
謝謝分享
作者:
中奧ol
時間:
2014-12-18 19:08
謝謝啦
作者:
LN555
時間:
2014-12-20 12:00
這是個坑啊
作者:
唉丶芒果
時間:
2014-12-20 15:16
好用麼。試試
作者:
ywd683
時間:
2015-1-2 09:14
謝謝,先下載收藏
作者:
qq704661078
時間:
2015-1-31 19:09
謝謝樓主分享!!!
作者:
fontex
時間:
2015-2-2 13:38
十分感謝!
作者:
w5201314123
時間:
2015-2-6 17:09
看看怎么做的
作者:
AOP
時間:
2015-2-8 17:41
看看再說............
作者:
naijiu
時間:
2015-2-9 04:05
謝謝樓主分享,學習了,,,
作者:
ding1995
時間:
2015-2-10 21:43
我也說一句什么啊啦啦啦
作者:
muzimuzi
時間:
2015-2-11 04:35
應該會挺不錯的吧
作者:
正本清源
時間:
2015-2-11 06:49
謝謝分享!
作者:
qpx770223
時間:
2015-2-13 18:46
支持頂一下
作者:
qpx770223
時間:
2015-2-13 18:46
支持頂一下
作者:
zoomhan
時間:
2015-2-15 13:15
看看再說~!
作者:
ydmxyz
時間:
2015-2-20 17:37
謝謝樓主
作者:
wangyifan
時間:
2015-2-22 17:50
下載研究學習一下,謝謝。
作者:
meilidianzhi
時間:
2015-2-23 22:09
謝謝你
作者:
w2015x
時間:
2015-3-5 18:02
看看寫的如何
作者:
znddcc
時間:
2015-4-10 11:17
學習下
作者:
hlywhp
時間:
2015-4-27 21:52
這個實用,謝了
作者:
kmtbm
時間:
2015-7-19 12:26
已經下載了,不錯不錯
作者:
段水青云
時間:
2015-7-19 19:50
好好好
作者:
段水青云
時間:
2015-7-19 19:50
很不錯不錯
作者:
綠源學習者
時間:
2015-7-20 12:25
不知道怎么樣,下載看看在說
作者:
basic_yuxw
時間:
2015-7-22 07:24
樓主能不能給個程序參考下
作者:
bhjyqjs
時間:
2015-7-22 10:56
挖墓高手,這種東西,直接貼出就是了
作者:
dangbingjoe
時間:
2015-7-22 11:09
挺好的不錯的啊
作者:
abc123194
時間:
2015-7-22 14:27
我看看,參考一下;沒程序看不明白
作者:
nyzgj
時間:
2015-8-28 23:54
謝啦
作者:
sleepinbed
時間:
2015-8-29 01:27
好東西 謝謝樓主的無私奉獻!
作者:
jiakuo25
時間:
2015-8-29 16:01
看過了,思路不錯 頂一下
作者:
bhjyqjs
時間:
2015-8-31 08:17
方法還是很好的
作者:
jnu1214
時間:
2015-12-5 17:56
只是文字上簡單介紹了下,沒有代碼的
作者:
永遠的王同學
時間:
2015-12-25 01:15
好!實踐出真知!
作者:
bbxyzzj
時間:
2015-12-25 08:52
有個實例最好了,更有利于初學者。
作者:
nsj21n
時間:
2015-12-25 11:35
思維是非常好的,只是內容略顯空洞,只是簡單描述一下沒有實例分析,基本上沒有實用價值。
作者:
初學者的L
時間:
2015-12-26 10:48
謝謝樓主。
作者:
雪玉寐影
時間:
2015-12-27 14:53
學習借鑒一下
作者:
小鑫好菜
時間:
2016-11-15 23:03
看看下,謝謝樓主分享
作者:
重樓之巔
時間:
2016-11-15 23:35
學習一下,謝謝樓主
作者:
xht9951
時間:
2016-11-16 18:00
剛剛注冊,下載不了,不知道和宋學松老師的有什么區別
作者:
linbai
時間:
2018-11-27 20:26
東西挺好的,
作者:
amos_machine
時間:
2024-7-14 16:50
下載,打開EXEL文件錯誤
作者:
joyb
時間:
2024-7-15 14:36
nsj21n 發表于 2015-12-25 11:35
思維是非常好的,只是內容略顯空洞,只是簡單描述一下沒有實例分析,基本上沒有實用價值。
分享一下十幾年我一直使用的按鍵處理方法
看見大家發了那么多按鍵的處理方法,我也發一個。
剛參加工作的時候,對比學校里和同事的按鍵處理函數,發現總是不盡如人意,有以下幾點:
1. 消抖復雜,效率低。很多人直接在電平判斷后使用delay()函數,進行消抖,耽誤時間;有人在按鍵電平中斷中消抖,導致其他的中斷,比如串口、定時等反應很慢,不適合做實時系統;
2. 特殊功能按鍵的處理麻煩。使用簡單電平判斷的按鍵掃描,在需要長按響應、復合按鍵響應、復合按鍵長按響應的時候,需要增加很多的標志位,反復使用if..else判斷,有時候把自個都搞亂了。
3. 不便于移植和修改。使用以上兩點編寫的函數,如果用在直接端口按鍵上的,那么在行列掃描按鍵的時候,就很難適應。導致每個項目都要更改一次。
想了很久之后,我結合PC的鍵盤處理方法,編寫了自己的按鍵函數,經過幾次修改,定了下來。這十幾年來,一直在用,方便移植,而且比較清晰。
——至少我自己這么覺得。
它有以下幾個特點:
1. 按鍵掃描和取值分開。
在中斷中(一般10ms),反復調用keyScan()進行按鍵掃描(包括消抖)。
消抖之后的按鍵值不返回,作為消息放到全局變量中;
在需要判斷的地方使用getKeyValue()獲取當前的鍵值,進行處理。
2. 每一個按鍵,都有單獨的標志位和計時變量。
消抖計時:
如果按鍵按下,每調用一次10ms中斷,gucKeyOkTimer增加;
gucKeyOkTimer超過消抖的閥值(我一般10次,即100ms),則確認有按鍵了。
任何一次掃描到按鍵沒有按下,gucKeyOkTimer清空;
標志位:
如果一直按著(通過按鍵電平判斷),會有gfOkPressing;
如果按下過一次,需要響應,會有gfOkNeedAck;
復合按鍵的響應:
因為每個按鍵,包括復合按鍵都有自己的標志位和計時變量,可以跟物理按鍵的處理方法相同。只是消抖的條件,不是電平的判斷,而是物理按鍵的pressing標志。
3. 我沒有使用怪癖詭異的編程方法。有很多取巧的方法可使實現按鍵的掃描,甚至有人寫了三行代碼就實現消抖。——我個人不喜歡這樣的程序風格。我喜歡思路清晰的編程方法,易于維護和移植。當然代價就是多了一些ROM和RAM占用,但我覺得時間和代碼的質量更重要。
如果你跟我的思路相同,也遇見過這樣的困惑,可以考慮我的按鍵掃描方法
作者:
gzyanbo
時間:
2024-7-15 16:11
想知道運用的例程
作者:
巨人卡奧
時間:
2024-7-22 15:16
牛皮,十幾年的經驗
作者:
csmjmcc
時間:
2024-7-30 10:57
沒有源碼?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区二区三区四区在线视频
|
在线91
|
精品国产成人
|
超碰美女在线
|
欧美精品91
|
成人午夜免费视频
|
西西裸体做爰视频
|
色狠狠一区
|
久久精品久久久
|
亚洲国产一区二区三区在线观看
|
日韩成人av在线
|
国产一区h
|
91在线视频观看免费
|
中文字幕乱码一区二区三区
|
在线播放中文字幕
|
色成人免费网站
|
久久久蜜桃一区二区人
|
亚洲精品二三区
|
欧美理论片在线
|
中文字幕第三页
|
超碰日韩
|
亚洲第一视频网
|
黄色一级免费观看
|
国产欧美精品区一区二区三区
|
国产成人在线一区二区
|
日韩中字幕
|
久久精彩视频
|
久久高清
|
91精品国产综合久久精品
|
欧美 日韩 亚洲91麻豆精品
|
免费xxxx大片国产在线
|
青青草社区
|
精品视频一区二区在线观看
|
日韩欧美在线免费观看
|
一区在线观看视频
|
色综合激情
|
视频在线观看一区二区
|
精品综合
|
久久久久av
|
aaaa网站
|
黄色片网站国产
|