久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 87120|回復(fù): 241
收起左側(cè)

[分享]分享一下我用了十幾年的按鍵掃描方法

  [復(fù)制鏈接]
ID:51941 發(fā)表于 2013-7-22 11:43 | 顯示全部樓層 |閱讀模式
看見(jiàn)大家發(fā)了那么多按鍵的處理方法,我也發(fā)一個(gè)。

剛參加工作的時(shí)候,對(duì)比學(xué)校里和同事的按鍵處理函數(shù),發(fā)現(xiàn)總是不盡如人意,
有以下幾點(diǎn):
1. 消抖復(fù)雜,效率低。很多人直接在電平判斷后使用delay()函數(shù),進(jìn)行消抖,
耽誤時(shí)間;有人在按鍵電平中斷中消抖,導(dǎo)致其他的中斷,比如串口、定時(shí)等
反應(yīng)很慢,不適合做實(shí)時(shí)系統(tǒng);
2. 特殊功能按鍵的處理麻煩。使用簡(jiǎn)單電平判斷的按鍵掃描,在需要長(zhǎng)按響應(yīng)、
復(fù)合按鍵響應(yīng)、復(fù)合按鍵長(zhǎng)按響應(yīng)的時(shí)候,需要增加很多的標(biāo)志位,反復(fù)使用
if..else判斷,有時(shí)候把自個(gè)都搞亂了。
3. 不便于移植和修改。使用以上兩點(diǎn)編寫(xiě)的函數(shù),如果用在直接端口按鍵上的,
那么在行列掃描按鍵的時(shí)候,就很難適應(yīng)。導(dǎo)致每個(gè)項(xiàng)目都要更改一次。

想了很久之后,我結(jié)合PC的鍵盤(pán)處理方法,編寫(xiě)了自己的按鍵函數(shù),經(jīng)過(guò)幾次修改,
定了下來(lái)。這十幾年來(lái),一直在用,方便移植,而且比較清晰。
——至少我自己這么覺(jué)得。

它有以下幾個(gè)特點(diǎn):
1. 按鍵掃描和取值分開(kāi)。
    在中斷中(一般10ms),反復(fù)調(diào)用keyScan()進(jìn)行按鍵掃描(包括消抖)。
    消抖之后的按鍵值不返回,作為消息放到全局變量中;
    在需要判斷的地方使用getKeyValue()獲取當(dāng)前的鍵值,進(jìn)行處理。

2. 每一個(gè)按鍵,都有單獨(dú)的標(biāo)志位和計(jì)時(shí)變量。
    消抖計(jì)時(shí):
    如果按鍵按下,每調(diào)用一次10ms中斷,gucKeyOkTimer增加;
    gucKeyOkTimer超過(guò)消抖的閥值(我一般10次,即100ms),則確認(rèn)有按鍵了。
    任何一次掃描到按鍵沒(méi)有按下,gucKeyOkTimer清空;

    標(biāo)志位:
    如果一直按著(通過(guò)按鍵電平判斷),會(huì)有g(shù)fOkPressing;
    如果按下過(guò)一次,需要響應(yīng),會(huì)有g(shù)fOkNeedAck;

    復(fù)合按鍵的響應(yīng):
    因?yàn)槊總(gè)按鍵,包括復(fù)合按鍵都有自己的標(biāo)志位和計(jì)時(shí)變量,可以跟物理按鍵的
    處理方法相同。只是消抖的條件,不是電平的判斷,而是物理按鍵的pressing標(biāo)志。

3. 我沒(méi)有使用怪癖詭異的編程方法。有很多取巧的方法可使實(shí)現(xiàn)按鍵的掃描,甚至有
人寫(xiě)了三行代碼就實(shí)現(xiàn)消抖。——我個(gè)人不喜歡這樣的程序風(fēng)格。我喜歡思路清晰的編程方法,
易于維護(hù)和移植。當(dāng)然代價(jià)就是多了一些ROM和RAM占用,但我覺(jué)得時(shí)間和代碼的質(zhì)量更重要。

如果你跟我的思路相同,也遇見(jiàn)過(guò)這樣的困惑,可以考慮我的按鍵掃描方法。

我摘錄了與按鍵相關(guān)的部分,如果有疑問(wèn),歡迎通過(guò)郵件或QQ溝通。


key.rar

1.23 KB, 下載次數(shù): 1696

按鍵處理

評(píng)分

參與人數(shù) 12黑幣 +84 收起 理由
770632741 + 5 很給力!
zzffw + 5 很給力!
荒謬的真理 + 5 絕世好帖!
zxc562 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
wangjunwu1995 + 5 22223
sunlei058378 + 15
archerelf + 2 很給力!
init() + 5 很給力!
一毛零logo + 5 說(shuō)的很吸引人,感覺(jué)應(yīng)該不錯(cuò)
absflash + 15 很給力!
YJGG + 12 贊一個(gè)!
遙遠(yuǎn)716 + 5 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:33668 發(fā)表于 2014-5-17 21:44 | 顯示全部樓層
感謝樓主分享!!!!!!!!!!!!!!!!
回復(fù)

使用道具 舉報(bào)

ID:62340 發(fā)表于 2014-5-27 22:32 來(lái)自觸屏版 | 顯示全部樓層
好好學(xué)習(xí),天天進(jìn)步
回復(fù)

使用道具 舉報(bào)

ID:54987 發(fā)表于 2014-5-31 03:26 | 顯示全部樓層
。進(jìn)來(lái)學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:18916 發(fā)表于 2014-6-14 18:23 | 顯示全部樓層
難得的精神
回復(fù)

使用道具 舉報(bào)

ID:63546 發(fā)表于 2014-7-3 11:20 來(lái)自觸屏版 | 顯示全部樓層
高手啊!!!!
回復(fù)

使用道具 舉報(bào)

ID:62929 發(fā)表于 2014-7-3 16:30 | 顯示全部樓層
好東西!!!!
回復(fù)

使用道具 舉報(bào)

ID:63588 發(fā)表于 2014-7-7 13:19 | 顯示全部樓層
看看高級(jí)的程序
回復(fù)

使用道具 舉報(bào)

ID:63749 發(fā)表于 2014-7-8 10:14 | 顯示全部樓層
高手啊!!!!
回復(fù)

使用道具 舉報(bào)

ID:63688 發(fā)表于 2014-7-12 07:18 | 顯示全部樓層
謝謝樓主分享!!!
回復(fù)

使用道具 舉報(bào)

ID:55644 發(fā)表于 2014-7-12 17:51 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:29016 發(fā)表于 2014-7-12 22:28 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:63977 發(fā)表于 2014-7-14 17:30 | 顯示全部樓層
好東東。謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:64178 發(fā)表于 2014-7-21 22:21 | 顯示全部樓層
高手啊
回復(fù)

使用道具 舉報(bào)

ID:64017 發(fā)表于 2014-7-24 13:49 | 顯示全部樓層

好東東。謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:64322 發(fā)表于 2014-7-24 15:47 | 顯示全部樓層
謝謝樓主啦!!分享很好
回復(fù)

使用道具 舉報(bào)

ID:34932 發(fā)表于 2014-7-31 10:48 | 顯示全部樓層
感覺(jué)很給力,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:64633 發(fā)表于 2014-8-1 16:45 | 顯示全部樓層
謝謝謝!!
回復(fù)

使用道具 舉報(bào)

ID:65209 發(fā)表于 2014-8-18 23:15 來(lái)自觸屏版 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:64931 發(fā)表于 2014-8-20 12:40 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:65275 發(fā)表于 2014-8-20 17:30 | 顯示全部樓層
看看是什么啊!~
回復(fù)

使用道具 舉報(bào)

ID:65234 發(fā)表于 2014-8-21 10:05 來(lái)自觸屏版 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:65680 發(fā)表于 2014-9-1 22:01 | 顯示全部樓層
新人回一帖,不知所云
回復(fù)

使用道具 舉報(bào)

ID:65697 發(fā)表于 2014-9-2 10:24 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:65707 發(fā)表于 2014-9-2 19:57 | 顯示全部樓層
這個(gè)東東絕對(duì)值得一看。
回復(fù)

使用道具 舉報(bào)

ID:65706 發(fā)表于 2014-9-3 20:16 來(lái)自觸屏版 | 顯示全部樓層
真不錯(cuò)誒!我也一直想解決程序里的沖突,可沒(méi)耐心去細(xì)細(xì)思索,看了此文豁然開(kāi)朗啊!太感謝樓主了
回復(fù)

使用道具 舉報(bào)

ID:65893 發(fā)表于 2014-9-7 09:37 | 顯示全部樓層
好好學(xué)習(xí),天天進(jìn)步
回復(fù)

使用道具 舉報(bào)

ID:56814 發(fā)表于 2014-9-10 20:42 | 顯示全部樓層
謝謝樓主的資料,真是好
回復(fù)

使用道具 舉報(bào)

ID:66016 發(fā)表于 2014-9-10 20:46 | 顯示全部樓層
謝謝樓主分享!!
回復(fù)

使用道具 舉報(bào)

ID:56814 發(fā)表于 2014-9-11 08:25 | 顯示全部樓層
好資料,值得學(xué)習(xí),謝了
回復(fù)

使用道具 舉報(bào)

ID:55063 發(fā)表于 2014-9-11 08:51 | 顯示全部樓層
好東東哦,感謝樓主
回復(fù)

使用道具 舉報(bào)

ID:34920 發(fā)表于 2014-9-11 09:29 | 顯示全部樓層
感謝樓主分享!!!!!!!!!!!!!!!!
回復(fù)

使用道具 舉報(bào)

ID:66049 發(fā)表于 2014-9-11 16:34 | 顯示全部樓層
謝謝分享。。。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:47760 發(fā)表于 2014-9-13 04:42 | 顯示全部樓層
謝謝分享!!
回復(fù)

使用道具 舉報(bào)

ID:66181 發(fā)表于 2014-9-15 10:53 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:65286 發(fā)表于 2014-10-12 14:09 | 顯示全部樓層
謝謝分享!!!!
回復(fù)

使用道具 舉報(bào)

ID:65592 發(fā)表于 2014-10-13 00:40 | 顯示全部樓層
感謝..............
回復(fù)

使用道具 舉報(bào)

ID:51348 發(fā)表于 2014-10-16 00:48 | 顯示全部樓層
感謝樓主 .... 學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:51348 發(fā)表于 2014-10-16 00:52 | 顯示全部樓層
狀態(tài)機(jī)識(shí)別
回復(fù)

使用道具 舉報(bào)

ID:67460 發(fā)表于 2014-10-16 06:04 | 顯示全部樓層
感謝樓主分享,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本羞羞影院 | 美国黄色毛片 | 亚洲精品欧美 | 精品久草 | 亚洲精品久久久久久久久久久久久 | 中文字幕在线不卡播放 | 成人精品视频99在线观看免费 | 国产精品免费一区二区三区四区 | 午夜视频在线观看一区二区 | 青草青草久热精品视频在线观看 | www.99热.com| 美女视频久久 | 国产亚洲精品精品国产亚洲综合 | 国产在线视频一区二区董小宛性色 | 亚洲欧洲日韩精品 中文字幕 | 国产乱码一区 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 久久青 | 日韩精品视频一区二区三区 | 亚洲视频网 | 精品国产欧美日韩不卡在线观看 | 伊人久久大香线 | 天堂一区在线 | 成人免费在线观看 | 国产综合网站 | 日韩精品视频在线免费观看 | 久久久美女 | 国产美女在线观看 | 人操人免费视频 | 国产一区二区精品在线 | 日韩欧美国产综合 | 亚洲欧美一区在线 | 国产成人精品av | 99久久婷婷国产精品综合 | 久久精品国产久精国产 | 成人在线视频免费观看 | 99久久影院 | 国产91亚洲精品一区二区三区 | 天天操天天射综合网 | 国产精品久久久久久久久 | 亚洲一区二区网站 |