新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機秒表的程序設計

        基于51單片機秒表的程序設計

        作者: 時間:2012-07-09 來源:網絡 收藏

        ;主程序

        ;――――――――――初始化程序―――――――――――

        MAIN: MOV TMOD,#61H ;置T0方式1定時,T1方式2計數

        MOV TH0,#3CH ;T0置初值

        MOV TL0,#0B0H

        MOV TH1,#0C4H ;T1置初值

        MOV TL1,#0C4H

        MOV DPTR,#4400H ;8155控制口地址送DPTR

        MOV A,#43H ;設置8155工作方式字

        MOVX @DPTR,A ;設置PA、PB口輸出,PC口輸入

        MOV 20H,#00H ;60秒計數單元置初值

        MOV 21H,#14H ;50ms計數單元置初值

        MOV SP,#3FH ;堆棧指針置初值

        MOV R2,#08H n, bsp; ;LED待顯示位數送R2

        MOV R0,#30H ;顯示緩沖區首址送R0

        STAR: MOV @R0,#00H ;顯示緩沖區清零

        INC R0

        DJNZ R2,STAR

        CLR A ;累加器清零

        ;―――――――――――鍵盤查詢程序――――――――――

        KEY: ACALL KS ;調按鍵查詢子程序判是否有鍵按下

        JNZ K1 ;有鍵按下轉移

        ACALL DISP ;無鍵按下,調顯示子程序延時

        AJMP KEY ;繼續查詢按鍵

        ;―――――――――――鍵盤掃描程序――――――――――

        K1: ACALL DISP ;鍵盤去抖延時

        ACALL DISP

        ACALL KS ;再次判別是否有鍵按下

        JNZ K2 ;有鍵按下轉移

        AJMP KEY ;無按鍵,誤讀,繼續查詢按鍵

        K2: MOV R3,#0FEH ;首列掃描字送R3

        MOV R4,#00H ;首列號送R4

        K3: MOV DPTR,#4401H ;PA口地址送DPTR,開始列掃描

        MOV A,R3

        MOVX @DPTR,A ;列掃描字送PA口

        INC DPTR ;指向PC口

        INC DPTR

        MOVX A,@DPTR ;讀取行掃描值

        JB ACC.0,L1 ;第0行無鍵按下,轉查第1行

        MOV A,#00H ;第0行有鍵按下,行首鍵號送A

        AJMP LK ;轉求鍵號

        L1: JB ACC.1,L2 ;第1行無鍵按下,轉查第2行

        MOV A,#08H ;第1行有鍵按下,行首鍵號送A

        AJMP LK ;轉求鍵號

        L2: JB ACC.2,L3 ;第2行無鍵按下,轉查第3行

        MOV A,#10H ;第2行有鍵按下,行首鍵號送A

        AJMP LK ;轉求鍵號

        L3: JB ACC.3,NEXT ;第3行無鍵按下,轉查下一列

        MOV A,#18H ;第3行有鍵按下,行首鍵號送A

        AJMP LK

        LK: ADD A,R4 ;形成鍵碼送A

        PUSH ACC ;鍵碼入棧保護

        K4: ACALL DISP

        ACALL KS ;等待鍵釋放

        JNZ K4 ;未釋放,等待

        POP ACC ;鍵釋放,彈棧送A

        AJMP PR ;轉鍵盤處理程序

        NEXT: INC R4 ;修改列號

        MOV A,R3

        JNB ACC.3,KEY ;4列掃描完返回按鍵查詢狀態

        RL A ;未掃描完,改為下列掃描字

        MOV R3,A , nbsp; ;掃描字暫存R3

        AJMP K3 ;轉列掃描程序

        ;―――――――――――鍵盤處理程序―――――――――――――――

        PR: CJNE A,#00H,PR01 ;不是KE0鍵碼,轉KE1鍵

        AJMP KE0 ;轉KE0鍵處理程序

        PR01: CJNE A,#01H,PR02 ;不是KE1鍵碼,轉KE2鍵

        AJMP KE1 ;轉KE1鍵處理程序

        PR02: CJNE A,#02H,PR03 ;不是KE2鍵碼,返回按鍵查詢

        AJMP KE2 ;轉KE2鍵處理程序

        PR03: AJMP KEY

        KE0: SETB TR0 ;啟動T0

        SETB TR1 ;啟動T1

        SETB ET0 ;允許T0中斷

        SETB EA ;開中斷

        AJMP KEY ;返回鍵盤查詢狀態

        燃氣報警器相關文章:燃氣報警器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 亚东县| 景泰县| 灵石县| 土默特左旗| 黑山县| 灵璧县| 株洲市| 北碚区| 西峡县| 伊川县| 阿拉善左旗| 靖宇县| 会宁县| 家居| 腾冲县| 祁东县| 成安县| 汉源县| 浮山县| 岳池县| 苗栗市| 章丘市| 毕节市| 九台市| 安福县| 华宁县| 祁连县| 东丰县| 拜泉县| 濮阳市| 饶平县| 桂阳县| 东源县| 正安县| 崇左市| 桃源县| 凤城市| 中超| 桂东县| 宜都市| 淮南市|