標(biāo)題: 一種基于定時(shí)中斷的按鍵檢測程序 [打印本頁]
作者: jiujiu 時(shí)間: 2014-12-20 18:31
標(biāo)題: 一種基于定時(shí)中斷的按鍵檢測程序
零 該程序產(chǎn)生的背景
話說2012年,小白菜要做一個(gè)三相電壓電流組合表,這個(gè)儀表需要進(jìn)行數(shù)據(jù)輸入(小白菜以前的項(xiàng)目也有輸入,但是小白菜沒有仔細(xì)的研究過),并且給出的時(shí)間很長,小白菜有時(shí)間來做一些“研究處理”。拿著以前寫的按鍵檢測程序,感覺漏洞百出,于是想著趁著有時(shí)間把這部分做出來,于是便用了一個(gè)星期(實(shí)際是5天,雙休思密達(dá))專門寫了這部分程序。
一 小白菜的應(yīng)用需求
小白菜的儀表僅需要單短擊(簡稱單擊)和單長擊(簡稱長擊),單短擊要在按鍵松開后才進(jìn)行識別,單長擊要在達(dá)到設(shè)定的時(shí)間閥值時(shí)進(jìn)行識別(這時(shí)按鍵未松開)。
不需要考慮的情況如下,不需要連擊(可以做為多次短擊)、不需要多鍵同時(shí)擊、暫時(shí)不需要考慮輸入數(shù)字時(shí)長按某鍵,數(shù)字快速自加或自減。
該檢測程序要滿目不依賴于任何一種單片機(jī),也不依賴按鍵連接方式,如獨(dú)立式,矩陣式(當(dāng)然你要用按鍵掃描芯片那就……你要用AD式鍵盤,我……好吧,你贏了~),能夠獨(dú)立存在。
二 按鍵過程分析
1 按鍵小思考
正常的按鍵過程(不考慮非法的按鍵狀態(tài))如圖2.1.1。
2249085zccjmnojx9qxeni.jpg (8.98 KB, 下載次數(shù): 219)
下載附件
2014-12-20 18:56 上傳
圖2.1.1 正常按鍵狀態(tài)示意圖
單擊和長擊只是時(shí)間上的區(qū)分而已,但是其識別時(shí)稍有區(qū)別,單擊是在按鍵松開時(shí)進(jìn)行識別的,長擊是在按鍵閉合時(shí)進(jìn)行識別的。見圖2.1.2。
224908h5c8rckfofjrg35j.jpg (14.99 KB, 下載次數(shù): 270)
下載附件
2014-12-20 18:56 上傳
圖2.1.2 長短擊按鍵狀態(tài)示意圖
2 各種可能出現(xiàn)的按鍵情況
合法情況不再贅述。下面把非法(僅在本應(yīng)用中非法)的情況列一下。
(1) 人為或干擾引起的單擊時(shí)間過短(主要為防干擾)。
(2) 單擊時(shí)間過長(與(1)對應(yīng),凡事有短就有長,要有度嘛~)。
(3) 按下了多個(gè)鍵(與我的應(yīng)用需要相悖,所以非法)。這里有可能是同時(shí)按的,也有可能是異步按下的。
(4) 快速多次按同一個(gè)鍵。這種情況可以歸結(jié)到(1)。
(5) 我覺得沒有了,元芳,你怎么看??
一種基于定時(shí)器按鍵檢測程序(已測試).rar
(527.02 KB, 下載次數(shù): 260)
2014-12-20 18:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: jiujiu 時(shí)間: 2014-12-20 18:32
AppStdin.C文件:
作者: jiujiu 時(shí)間: 2014-12-20 18:32
AppStdin.H文件:
作者: jiujiu 時(shí)間: 2014-12-20 18:34
TypeRedefine.H文件:
作者: jiujiu 時(shí)間: 2014-12-20 18:34
Config.H文件:
- /*
- ********************************************************************************
- * 開發(fā)環(huán)境 : Keil4
- * 文件名 : Config.H
- * 程序員 : 3htech
- * 開發(fā)時(shí)間 : 2012-06-06
- * 描述 : 所有頭文件的總集合
- * 生存條件 : 自由存在。
- *-------------------------------------------------------------------------------
- * 修 改 :
- * 日 期 :
- * 描 述 :
- *-------------------------------------------------------------------------------
- ********************************************************************************
- */
- //------------------------------ 文件開關(guān) ------------------------------//
- // 防止文件包含時(shí)多次編本文件,與本文件結(jié)尾處的endif對應(yīng)。
- #ifndef _CONFIG_H_
- #define _CONFIG_H_
- //----------------------------------------------------------------------------//
- //------------------------------ 系統(tǒng)頭文件包含 ------------------------------//
- #include<intrins.h>
- #include <stdio.H>
- #include <stdlib.H>
- #include <math.H>
- //----------------------------- 自定義頭文件包含 -----------------------------//
- // 單片機(jī)頭文件
- //=============================//
- #include "ATT703x.H"
- // 公共層
- //=============================//
- #include "TypeRedefine.H"
- // 應(yīng)用層
- //=============================//
- // 芯片驅(qū)動
- //=============================//
- // 總線驅(qū)動
- //=============================//
- //------------------------------ 文件開關(guān) ------------------------------//
- // 防止文件包含時(shí)多次編本文件,與本文件開頭處的 #ifndef 對應(yīng)。
- #endif
- //----------------------------------------------------------------------------//
- //------------------------------ 文件結(jié)束 ------------------------------//
復(fù)制代碼
作者: 51hei電控2112312 時(shí)間: 2014-12-24 20:25
GOOD!!!
作者: wangyifan 時(shí)間: 2015-2-23 21:17
不錯,下載來慢慢研究,謝謝!
作者: 西點(diǎn)鐘靈毓秀 時(shí)間: 2015-7-27 18:20


號東西呀。!
不知道會不會用到了
作者: bhjyqjs 時(shí)間: 2018-2-9 15:43
不錯,很有研究價(jià)值
作者: changchang12345 時(shí)間: 2018-8-8 17:10
不錯 很值得研究
作者: mozid9 時(shí)間: 2018-10-16 14:42
謝謝樓主分享!
作者: PCB_PCB 時(shí)間: 2018-11-5 15:44
向樓主學(xué)習(xí),注譯很清楚
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |