單片機(jī)鍵盤處理程序設(shè)計舉例_第1頁
單片機(jī)鍵盤處理程序設(shè)計舉例_第2頁
單片機(jī)鍵盤處理程序設(shè)計舉例_第3頁
單片機(jī)鍵盤處理程序設(shè)計舉例_第4頁
單片機(jī)鍵盤處理程序設(shè)計舉例_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【W(wǎng)ord版本下載可任意編輯】單片機(jī)鍵盤處理程序設(shè)計舉例1、鍵盤與的連接

圖3

圖4

2、通過1/0口連接。將每個按鈕的一端接到單片機(jī)的I/O口,另一端接地,這是簡單的方法,如圖3所示是實驗板上按鈕的接法,四個按鈕分別接到P3.2、P3.3、P3.4和P3.5。對于這種鍵各程序能采用持續(xù)查詢的方法,功能就是:檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉(zhuǎn)入對應(yīng)的鍵處理。下面給出一個例程。其功能很簡單,四個鍵定義如下:

P3.2:開始,按此鍵則燈開始流動(由上而下)

P3.3:停止,按此鍵則停止流動,所有燈為暗

P3.4:上,按此鍵則燈由上向下流動

P3.5:下,按此鍵則燈由下向上流動

UpDownEQU00H;上下行標(biāo)志

StartEndEQU01H;起動及停止標(biāo)志

LAMPCODEEQU21H;存放流動的數(shù)據(jù)代碼

以下程序功能很簡單,但它演示了一個單片機(jī)程序的基本思路,程序本身很簡單,也不很實用,實際工作中還會有好多要考慮的因素,比方主循環(huán)每次都調(diào)用燈的循環(huán)程序,會造成按鈕反應(yīng)“遲鈍”,而如果一直按著鍵不放,則燈不會再流動,一直要到松開手為止,等等,大家能仔細(xì)考慮一下這些問題,再想想有什么好的解決方法。

ORG0000H

AJMPMAIN

ORG30H

MAIN:

MOVSP,#5FH

MOVP1,#0FFH

CLRUpDown;啟動時處于向上的狀態(tài)

CLRStartEnd;啟動時處于停止?fàn)顟B(tài)

MOVLAMPCODE,#0FEH;單燈流動的代碼

LOOP:

ACALLKEY;調(diào)用鍵盤程序

JNBF0,LNEXT;如果無鍵按下,則繼續(xù)

ACALLKEYPROC;不然調(diào)用鍵盤處理程序

LNEXT:

ACALLLAMP;調(diào)用燈顯示程序

AJMPLOOP;反復(fù)循環(huán),主程序到此結(jié)束

DELAY:

MOVR7,#100

D1:MOVR6,#100

DJNZR6,$

DJNZR7,D1

RET

;延時程序,鍵盤處理中調(diào)用

KEYPROC:

MOVA,B;從B存放器中獲取鍵值

JBACC.2,KeyStart;分析鍵的代碼,某位被按下,則該位為1(因為在鍵盤程序中已取反)

JBACC.3,KeyOver

JBACC.4,KeyUp

JBACC.5,KeyDown

AJMPKEY_RET

KeyStart:

SETBStartEnd;個鍵按下后的處理

AJMPKEY_RET

KeyOver:

CLRStartEnd;第二個鍵按下后的處理

AJMPKEY_RET

KeyUp:SETBUpDown;第三個鍵按下后的處理

AJMPKEY_RET

KeyDown:

CLRUpDown;第四個鍵按下后的處理

KEY_RET:RET

KEY:

CLRF0;清F0,表示無鍵按下。

ORLP3,#00111100B;將P3口的接有鍵的四位置1

MOVA,P3;取P3的值

ORLA,#11000011B;將其余4位置1

CPLA;取反

JZK_RET;如果為0則一定無鍵按下

ACALLDELAY;不然延時去鍵抖

ORLP3,#00111100B

MOVA,P3

ORLA,#11000011B

CPLA

JZK_RET

MOVB,A;確實有鍵按下,將鍵值存入B中

SETBF0;設(shè)置有鍵按下的標(biāo)志

K_RET:

ORLP3,#00111100B;此處循環(huán)等待鍵的釋放

MOVA,P3

ORLA,#11000011B

CPLA

JZK_RET1;直到讀取的數(shù)據(jù)取反后為0說明鍵釋放了,才從鍵盤處理程序中返回

AJMPK_RET

K_RET1:

RET

D500MS:;流水燈的延遲時間

PUSHPSW

SETBRS0

MOVR7,#200

D51:MOVR6,#250

D52:NOP

NOP

NOP

NOP

DJNZR6,D52

DJNZR7,D51

POPPSW

RET

LAMP:

JBStartEnd,LampStart;如果StartEnd=1,則啟動

MOVP1,#0FFH

AJMPLAMPRET;不然關(guān)閉所有顯示,返回

LampStart:

JBUpDown,LAMPUP;如果UpDown=1,則向上流動

MOVA,LAMPCODE

RLA;實際就是左移位而已

MOVLAMPCODE,A

MOVP1,A

LCALLD500MS

AJMPLAMPRET

LAMPUP:

MOVA,LAMPCODE

RRA;向下流動實際就是右移

MOVLAMPCODE,A

MOVP1,A

LCALLD500MS

LAMPRET:

RET

END

以上程序功能很簡單,但它演示了一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論