在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 單片機鍵盤處理程序設(shè)計舉例

            單片機鍵盤處理程序設(shè)計舉例

            作者: 時間:2018-07-25 來源:網(wǎng)絡(luò) 收藏

            1、鍵盤與的連接

            本文引用地址:http://www.biyoush.com/article/201807/383778.htm

            鍵盤連接>

            圖3

            與鍵盤接口圖>

            圖4

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

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

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

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

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

            UpDown EQU 00H ;上下行標志

            StartEnd EQU 01H ;起動及停止標志

            LAMPCODE EQU 21H ;存放流動的數(shù)據(jù)代碼

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

            ORG 0000H

            AJMP MAIN

            ORG 30H

            MAIN:

            MOV SP,#5FH

            MOV P1,#0FFH

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

            CLR StartEnd ;啟動時處于停止狀態(tài)

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

            LOOP:

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

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

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

            LNEXT:

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

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

            DELAY:

            MOV R7,#100

            D1: MOV R6,#100

            DJNZ R6,$

            DJNZ R7,D1

            RET

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

            KEYPROC:

            MOV A,B ;從B寄存器中獲取鍵值

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

            JB ACC.3,KeyOver

            JB ACC.4,KeyUp

            JB ACC.5,KeyDown

            AJMP KEY_RET

            KeyStart:

            SETB StartEnd ;第一個鍵按下后的處理

            AJMP KEY_RET

            KeyOver:

            CLR StartEnd ;第二個鍵按下后的處理

            AJMP KEY_RET

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

            AJMP KEY_RET

            KeyDown:

            CLR UpDown ;第四個鍵按下后的處理

            KEY_RET:RET

            KEY:

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

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

            MOV A,P3 ;取P3的值

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

            CPL A ;取反

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

            ACALL DELAY ;不然延時去鍵抖

            ORL P3,#00111100B

            MOV A,P3

            ORL A,#11000011B

            CPL A

            JZ K_RET

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

            SETB F0 ;設(shè)置有鍵按下的標志

            K_RET:

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

            MOV A,P3

            ORL A,#11000011B

            CPL A

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

            AJMP K_RET

            K_RET1:

            RET

            D500MS: ;流水燈的延遲時間

            PUSH PSW

            SETB RS0

            MOV R7,#200

            D51: MOV R6,#250

            D52: NOP

            NOP

            NOP

            NOP

            DJNZ R6,D52

            DJNZ R7,D51

            POP PSW

            RET

            LAMP:

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

            MOV P1,#0FFH

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

            LampStart:

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

            MOV A,LAMPCODE

            RL A ;實際就是左移位而已

            MOV LAMPCODE,A

            MOV P1,A

            LCALL D500MS

            AJMP LAMPRET

            LAMPUP:

            MOV A,LAMPCODE

            RR A ;向下流動實際就是右移

            MOV LAMPCODE,A

            MOV P1,A

            LCALL D500MS

            LAMPRET:

            RET

            END

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



            關(guān)鍵詞: 單片機

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉