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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 87778|回復: 241
打印 上一主題 下一主題
收起左側

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

  [復制鏈接]
跳轉到指定樓層
樓主
ID:51941 發表于 2013-7-22 11:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
看見大家發了那么多按鍵的處理方法,我也發一個。

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

想了很久之后,我結合PC的鍵盤處理方法,編寫了自己的按鍵函數,經過幾次修改,
定了下來。這十幾年來,一直在用,方便移植,而且比較清晰。
——至少我自己這么覺得。

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

2. 每一個按鍵,都有單獨的標志位和計時變量。
    消抖計時:
    如果按鍵按下,每調用一次10ms中斷,gucKeyOkTimer增加;
    gucKeyOkTimer超過消抖的閥值(我一般10次,即100ms),則確認有按鍵了。
    任何一次掃描到按鍵沒有按下,gucKeyOkTimer清空;

    標志位:
    如果一直按著(通過按鍵電平判斷),會有gfOkPressing;
    如果按下過一次,需要響應,會有gfOkNeedAck;

    復合按鍵的響應:
    因為每個按鍵,包括復合按鍵都有自己的標志位和計時變量,可以跟物理按鍵的
    處理方法相同。只是消抖的條件,不是電平的判斷,而是物理按鍵的pressing標志。

3. 我沒有使用怪癖詭異的編程方法。有很多取巧的方法可使實現按鍵的掃描,甚至有
人寫了三行代碼就實現消抖。——我個人不喜歡這樣的程序風格。我喜歡思路清晰的編程方法,
易于維護和移植。當然代價就是多了一些ROM和RAM占用,但我覺得時間和代碼的質量更重要。

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

我摘錄了與按鍵相關的部分,如果有疑問,歡迎通過郵件或QQ溝通。


key.rar

1.23 KB, 下載次數: 1696

按鍵處理

評分

參與人數 12黑幣 +84 收起 理由
770632741 + 5 很給力!
zzffw + 5 很給力!
荒謬的真理 + 5 絕世好帖!
zxc562 + 5 共享資料的黑幣獎勵!
wangjunwu1995 + 5 22223
sunlei058378 + 15
archerelf + 2 很給力!
init() + 5 很給力!
一毛零logo + 5 說的很吸引人,感覺應該不錯
absflash + 15 很給力!
YJGG + 12 贊一個!
遙遠716 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏54 分享淘帖 頂7 踩
回復

使用道具 舉報

沙發
ID:33668 發表于 2014-5-17 21:44 | 只看該作者
感謝樓主分享!!!!!!!!!!!!!!!!
回復

使用道具 舉報

板凳
ID:62340 發表于 2014-5-27 22:32 來自觸屏版 | 只看該作者
好好學習,天天進步
回復

使用道具 舉報

地板
ID:54987 發表于 2014-5-31 03:26 | 只看該作者
。進來學習下
回復

使用道具 舉報

5#
ID:18916 發表于 2014-6-14 18:23 | 只看該作者
難得的精神
回復

使用道具 舉報

6#
ID:63546 發表于 2014-7-3 11:20 來自觸屏版 | 只看該作者
高手啊!!!!
回復

使用道具 舉報

7#
ID:62929 發表于 2014-7-3 16:30 | 只看該作者
好東西!!!!
回復

使用道具 舉報

8#
ID:63588 發表于 2014-7-7 13:19 | 只看該作者
看看高級的程序
回復

使用道具 舉報

9#
ID:63749 發表于 2014-7-8 10:14 | 只看該作者
高手啊!!!!
回復

使用道具 舉報

10#
ID:63688 發表于 2014-7-12 07:18 | 只看該作者
謝謝樓主分享!!!
回復

使用道具 舉報

11#
ID:55644 發表于 2014-7-12 17:51 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

12#
ID:29016 發表于 2014-7-12 22:28 | 只看該作者
謝謝分享
回復

使用道具 舉報

13#
ID:63977 發表于 2014-7-14 17:30 | 只看該作者
好東東。謝謝分享
回復

使用道具 舉報

14#
ID:64178 發表于 2014-7-21 22:21 | 只看該作者
高手啊
回復

使用道具 舉報

15#
ID:64017 發表于 2014-7-24 13:49 | 只看該作者

好東東。謝謝分享
回復

使用道具 舉報

16#
ID:64322 發表于 2014-7-24 15:47 | 只看該作者
謝謝樓主啦!!分享很好
回復

使用道具 舉報

17#
ID:34932 發表于 2014-7-31 10:48 | 只看該作者
感覺很給力,謝謝分享
回復

使用道具 舉報

18#
ID:64633 發表于 2014-8-1 16:45 | 只看該作者
謝謝謝!!
回復

使用道具 舉報

19#
ID:65209 發表于 2014-8-18 23:15 來自觸屏版 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

20#
ID:64931 發表于 2014-8-20 12:40 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

21#
ID:65275 發表于 2014-8-20 17:30 | 只看該作者
看看是什么啊!~
回復

使用道具 舉報

22#
ID:65234 發表于 2014-8-21 10:05 來自觸屏版 | 只看該作者
謝謝分享
回復

使用道具 舉報

23#
ID:65680 發表于 2014-9-1 22:01 | 只看該作者
新人回一帖,不知所云
回復

使用道具 舉報

24#
ID:65697 發表于 2014-9-2 10:24 | 只看該作者
謝謝分享
回復

使用道具 舉報

25#
ID:65707 發表于 2014-9-2 19:57 | 只看該作者
這個東東絕對值得一看。
回復

使用道具 舉報

26#
ID:65706 發表于 2014-9-3 20:16 來自觸屏版 | 只看該作者
真不錯誒!我也一直想解決程序里的沖突,可沒耐心去細細思索,看了此文豁然開朗啊!太感謝樓主了
回復

使用道具 舉報

27#
ID:65893 發表于 2014-9-7 09:37 | 只看該作者
好好學習,天天進步
回復

使用道具 舉報

28#
ID:56814 發表于 2014-9-10 20:42 | 只看該作者
謝謝樓主的資料,真是好
回復

使用道具 舉報

29#
ID:66016 發表于 2014-9-10 20:46 | 只看該作者
謝謝樓主分享!!
回復

使用道具 舉報

30#
ID:56814 發表于 2014-9-11 08:25 | 只看該作者
好資料,值得學習,謝了
回復

使用道具 舉報

31#
ID:55063 發表于 2014-9-11 08:51 | 只看該作者
好東東哦,感謝樓主
回復

使用道具 舉報

32#
ID:34920 發表于 2014-9-11 09:29 | 只看該作者
感謝樓主分享!!!!!!!!!!!!!!!!
回復

使用道具 舉報

33#
ID:66049 發表于 2014-9-11 16:34 | 只看該作者
謝謝分享。。。。。。。。
回復

使用道具 舉報

34#
ID:47760 發表于 2014-9-13 04:42 | 只看該作者
謝謝分享!!
回復

使用道具 舉報

35#
ID:66181 發表于 2014-9-15 10:53 | 只看該作者
謝謝分享
回復

使用道具 舉報

36#
ID:65286 發表于 2014-10-12 14:09 | 只看該作者
謝謝分享!!!!
回復

使用道具 舉報

37#
ID:65592 發表于 2014-10-13 00:40 | 只看該作者
感謝..............
回復

使用道具 舉報

38#
ID:51348 發表于 2014-10-16 00:48 | 只看該作者
感謝樓主 .... 學習了
回復

使用道具 舉報

39#
ID:51348 發表于 2014-10-16 00:52 | 只看該作者
狀態機識別
回復

使用道具 舉報

40#
ID:67460 發表于 2014-10-16 06:04 | 只看該作者
感謝樓主分享,學習了!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级二级三级 | 国产精品一区二区在线免费观看 | av网址在线免费观看 | 永久免费av | 天天干天天舔 | 国产福利视频在线 | 国产农村妇女aaaaa视频 | 精品一区二区三区四区五区 | 国产一区二区中文字幕 | 欧美一级特黄视频 | 国产成人亚洲精品自产在线 | 成人欧美一区二区三区白人 | 精品少妇v888av | 久久久www成人免费精品 | 黄色国产 | 热久久久久 | 中文字幕免费观看视频 | 日韩国产在线观看 | 日韩精品久久久久久久酒店 | 日韩成人高清 | 天天搞天天搞 | 免费一级片 | 日韩国产一区二区三区 | 免费成人深夜夜国外 | www.久久久久 | 国产精品视频在线观看 | 亚洲乱码国产乱码精品精软件 | 国产精品久久久久久久久久久久久 | 亚洲一区二区三区在线视频 | 秋霞午夜鲁丝一区二区老狼 | 国产一区二区三区视频在线 | 日日干天天操 | 亚洲影院一区 | 在线视频日本 | 精品国产99久久久久久宅男i | 亚洲激情在线播放 | 国产女人18毛片18精品 | 久久综合五月天 | 国产一区精品在线观看 | 亚洲精品一区二三区 | 亚洲iv一区二区三区 |