程序中對(duì)按鍵處理方法
發(fā)布時(shí)間:2012/6/14 19:50:43 訪問(wèn)次數(shù):1650
無(wú)論是使用定時(shí)中斷還是實(shí)時(shí)時(shí)鐘芯片,運(yùn)行中XC95144XL-10TQG100C隨時(shí)都可能插入人工調(diào)校。在這里我使用了兩個(gè)按鍵SB1、SB2,前者負(fù)責(zé)數(shù)值依據(jù)調(diào)校內(nèi)容循環(huán)遞增,例如“分鐘”超過(guò)59就回到“月份”超過(guò)12就回到1等;后者負(fù)責(zé)光標(biāo)移動(dòng)(改變調(diào)校項(xiàng)目)。
程序中對(duì)按鍵處理方法是,定義了按鍵狀態(tài)變量key_state,初始為O,程序循環(huán)中一里檢測(cè)到有按鍵按下則轉(zhuǎn)為1,下次循環(huán)如檢測(cè)不到則回到0(意味著按鍵尚未穩(wěn)定),如繼續(xù)檢測(cè)到則認(rèn)為按鍵確實(shí)按下,進(jìn)行按鍵處理,然后進(jìn)入狀態(tài)2.在程序循環(huán)中檢測(cè)按鍵是否釋放,如已經(jīng)釋放則進(jìn)行某些后續(xù)處理并使按鍵狀態(tài)回到O,準(zhǔn)備下次按鍵檢測(cè)。這個(gè)方法的優(yōu)點(diǎn)是,檢測(cè)可靠,反應(yīng)較快,在按鍵檢測(cè)期間可以插入別的工作。具體詳情請(qǐng)參看源程序。
另外,程序中還定義了一個(gè)變量mode,作為調(diào)校標(biāo)志。初始為0,對(duì)應(yīng)時(shí)鐘顯示狀態(tài),確認(rèn)有按鍵按下則轉(zhuǎn)為1,進(jìn)入調(diào)校狀態(tài),直到經(jīng)過(guò)多次按鍵完成調(diào)校后它才回到O,再次進(jìn)入顯示狀態(tài),液晶顯示調(diào)校后的時(shí)間日期。如圖4所示,流程圖中左邊是調(diào)校循環(huán)狀態(tài),右邊是查鍵一顯示循環(huán)狀態(tài),啟動(dòng)初始化以后先進(jìn)入右邊循環(huán),每0Is查詢一次SB2鍵是否按下,如未按,則計(jì)數(shù)加1,直到查詢10次(正好是1s)刷新LCD顯示,同時(shí)計(jì)數(shù)清0,繼續(xù)循環(huán)。如SB2按下,則經(jīng)過(guò)50ms延時(shí)確認(rèn)后,置調(diào)校標(biāo)志為1,進(jìn)入左邊調(diào)校循環(huán)。在調(diào)校循環(huán)中,SB2鍵的作用是移動(dòng)光標(biāo)(改變調(diào)校項(xiàng)目)以及最后確認(rèn)完成調(diào)校,SB1鍵的作用是按照SB2當(dāng)前確定的調(diào)校項(xiàng)目改變?cè)O(shè)置值。調(diào)校按鍵循環(huán)周期是0.1s,調(diào)校完成后,設(shè)置值寫八DS1302,清除調(diào)校標(biāo)志,八查鍵一顯示循環(huán)。在此循環(huán)中,調(diào)校設(shè)置值也是跟隨液晶顯示每秒刷新一次。
程序中對(duì)按鍵處理方法是,定義了按鍵狀態(tài)變量key_state,初始為O,程序循環(huán)中一里檢測(cè)到有按鍵按下則轉(zhuǎn)為1,下次循環(huán)如檢測(cè)不到則回到0(意味著按鍵尚未穩(wěn)定),如繼續(xù)檢測(cè)到則認(rèn)為按鍵確實(shí)按下,進(jìn)行按鍵處理,然后進(jìn)入狀態(tài)2.在程序循環(huán)中檢測(cè)按鍵是否釋放,如已經(jīng)釋放則進(jìn)行某些后續(xù)處理并使按鍵狀態(tài)回到O,準(zhǔn)備下次按鍵檢測(cè)。這個(gè)方法的優(yōu)點(diǎn)是,檢測(cè)可靠,反應(yīng)較快,在按鍵檢測(cè)期間可以插入別的工作。具體詳情請(qǐng)參看源程序。
另外,程序中還定義了一個(gè)變量mode,作為調(diào)校標(biāo)志。初始為0,對(duì)應(yīng)時(shí)鐘顯示狀態(tài),確認(rèn)有按鍵按下則轉(zhuǎn)為1,進(jìn)入調(diào)校狀態(tài),直到經(jīng)過(guò)多次按鍵完成調(diào)校后它才回到O,再次進(jìn)入顯示狀態(tài),液晶顯示調(diào)校后的時(shí)間日期。如圖4所示,流程圖中左邊是調(diào)校循環(huán)狀態(tài),右邊是查鍵一顯示循環(huán)狀態(tài),啟動(dòng)初始化以后先進(jìn)入右邊循環(huán),每0Is查詢一次SB2鍵是否按下,如未按,則計(jì)數(shù)加1,直到查詢10次(正好是1s)刷新LCD顯示,同時(shí)計(jì)數(shù)清0,繼續(xù)循環(huán)。如SB2按下,則經(jīng)過(guò)50ms延時(shí)確認(rèn)后,置調(diào)校標(biāo)志為1,進(jìn)入左邊調(diào)校循環(huán)。在調(diào)校循環(huán)中,SB2鍵的作用是移動(dòng)光標(biāo)(改變調(diào)校項(xiàng)目)以及最后確認(rèn)完成調(diào)校,SB1鍵的作用是按照SB2當(dāng)前確定的調(diào)校項(xiàng)目改變?cè)O(shè)置值。調(diào)校按鍵循環(huán)周期是0.1s,調(diào)校完成后,設(shè)置值寫八DS1302,清除調(diào)校標(biāo)志,八查鍵一顯示循環(huán)。在此循環(huán)中,調(diào)校設(shè)置值也是跟隨液晶顯示每秒刷新一次。
無(wú)論是使用定時(shí)中斷還是實(shí)時(shí)時(shí)鐘芯片,運(yùn)行中XC95144XL-10TQG100C隨時(shí)都可能插入人工調(diào)校。在這里我使用了兩個(gè)按鍵SB1、SB2,前者負(fù)責(zé)數(shù)值依據(jù)調(diào)校內(nèi)容循環(huán)遞增,例如“分鐘”超過(guò)59就回到“月份”超過(guò)12就回到1等;后者負(fù)責(zé)光標(biāo)移動(dòng)(改變調(diào)校項(xiàng)目)。
程序中對(duì)按鍵處理方法是,定義了按鍵狀態(tài)變量key_state,初始為O,程序循環(huán)中一里檢測(cè)到有按鍵按下則轉(zhuǎn)為1,下次循環(huán)如檢測(cè)不到則回到0(意味著按鍵尚未穩(wěn)定),如繼續(xù)檢測(cè)到則認(rèn)為按鍵確實(shí)按下,進(jìn)行按鍵處理,然后進(jìn)入狀態(tài)2.在程序循環(huán)中檢測(cè)按鍵是否釋放,如已經(jīng)釋放則進(jìn)行某些后續(xù)處理并使按鍵狀態(tài)回到O,準(zhǔn)備下次按鍵檢測(cè)。這個(gè)方法的優(yōu)點(diǎn)是,檢測(cè)可靠,反應(yīng)較快,在按鍵檢測(cè)期間可以插入別的工作。具體詳情請(qǐng)參看源程序。
另外,程序中還定義了一個(gè)變量mode,作為調(diào)校標(biāo)志。初始為0,對(duì)應(yīng)時(shí)鐘顯示狀態(tài),確認(rèn)有按鍵按下則轉(zhuǎn)為1,進(jìn)入調(diào)校狀態(tài),直到經(jīng)過(guò)多次按鍵完成調(diào)校后它才回到O,再次進(jìn)入顯示狀態(tài),液晶顯示調(diào)校后的時(shí)間日期。如圖4所示,流程圖中左邊是調(diào)校循環(huán)狀態(tài),右邊是查鍵一顯示循環(huán)狀態(tài),啟動(dòng)初始化以后先進(jìn)入右邊循環(huán),每0Is查詢一次SB2鍵是否按下,如未按,則計(jì)數(shù)加1,直到查詢10次(正好是1s)刷新LCD顯示,同時(shí)計(jì)數(shù)清0,繼續(xù)循環(huán)。如SB2按下,則經(jīng)過(guò)50ms延時(shí)確認(rèn)后,置調(diào)校標(biāo)志為1,進(jìn)入左邊調(diào)校循環(huán)。在調(diào)校循環(huán)中,SB2鍵的作用是移動(dòng)光標(biāo)(改變調(diào)校項(xiàng)目)以及最后確認(rèn)完成調(diào)校,SB1鍵的作用是按照SB2當(dāng)前確定的調(diào)校項(xiàng)目改變?cè)O(shè)置值。調(diào)校按鍵循環(huán)周期是0.1s,調(diào)校完成后,設(shè)置值寫八DS1302,清除調(diào)校標(biāo)志,八查鍵一顯示循環(huán)。在此循環(huán)中,調(diào)校設(shè)置值也是跟隨液晶顯示每秒刷新一次。
程序中對(duì)按鍵處理方法是,定義了按鍵狀態(tài)變量key_state,初始為O,程序循環(huán)中一里檢測(cè)到有按鍵按下則轉(zhuǎn)為1,下次循環(huán)如檢測(cè)不到則回到0(意味著按鍵尚未穩(wěn)定),如繼續(xù)檢測(cè)到則認(rèn)為按鍵確實(shí)按下,進(jìn)行按鍵處理,然后進(jìn)入狀態(tài)2.在程序循環(huán)中檢測(cè)按鍵是否釋放,如已經(jīng)釋放則進(jìn)行某些后續(xù)處理并使按鍵狀態(tài)回到O,準(zhǔn)備下次按鍵檢測(cè)。這個(gè)方法的優(yōu)點(diǎn)是,檢測(cè)可靠,反應(yīng)較快,在按鍵檢測(cè)期間可以插入別的工作。具體詳情請(qǐng)參看源程序。
另外,程序中還定義了一個(gè)變量mode,作為調(diào)校標(biāo)志。初始為0,對(duì)應(yīng)時(shí)鐘顯示狀態(tài),確認(rèn)有按鍵按下則轉(zhuǎn)為1,進(jìn)入調(diào)校狀態(tài),直到經(jīng)過(guò)多次按鍵完成調(diào)校后它才回到O,再次進(jìn)入顯示狀態(tài),液晶顯示調(diào)校后的時(shí)間日期。如圖4所示,流程圖中左邊是調(diào)校循環(huán)狀態(tài),右邊是查鍵一顯示循環(huán)狀態(tài),啟動(dòng)初始化以后先進(jìn)入右邊循環(huán),每0Is查詢一次SB2鍵是否按下,如未按,則計(jì)數(shù)加1,直到查詢10次(正好是1s)刷新LCD顯示,同時(shí)計(jì)數(shù)清0,繼續(xù)循環(huán)。如SB2按下,則經(jīng)過(guò)50ms延時(shí)確認(rèn)后,置調(diào)校標(biāo)志為1,進(jìn)入左邊調(diào)校循環(huán)。在調(diào)校循環(huán)中,SB2鍵的作用是移動(dòng)光標(biāo)(改變調(diào)校項(xiàng)目)以及最后確認(rèn)完成調(diào)校,SB1鍵的作用是按照SB2當(dāng)前確定的調(diào)校項(xiàng)目改變?cè)O(shè)置值。調(diào)校按鍵循環(huán)周期是0.1s,調(diào)校完成后,設(shè)置值寫八DS1302,清除調(diào)校標(biāo)志,八查鍵一顯示循環(huán)。在此循環(huán)中,調(diào)校設(shè)置值也是跟隨液晶顯示每秒刷新一次。
上一篇:怎樣顯示時(shí)間?
上一篇:程序運(yùn)行
熱門點(diǎn)擊
- 矢量控制原理圖
- 100倍的放大器
- 采用零偏置JFET的放大電路
- 芯片功能說(shuō)明
- 高頻截止頻率
- 程序中對(duì)按鍵處理方法
- 測(cè)量輸入阻抗
- 測(cè)定輸入阻抗
- 變頻器輸出側(cè)增加輸出濾波器
- 頻率調(diào)制音頻信號(hào)-FM
推薦技術(shù)資料
- 循線機(jī)器人是機(jī)器人入門和
- 循線機(jī)器人是機(jī)器人入門和比賽最常用的控制方式,E48S... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究