新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機驅動4X4矩陣式鍵盤輸入程序

        單片機驅動4X4矩陣式鍵盤輸入程序

        作者: 時間:2012-12-05 來源:網絡 收藏

        用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;在數碼管上顯示每個按鍵的“0-F”序號。 實現鍵盤輸入的識別。

        我將給大家提供c和匯編兩個版本的4X4。如匯編語言源程序:

        KEYBUF EQU 30H
        ORG 00H
        START: MOV KEYBUF,#2
        WAIT:
        MOV P3,#0FFH
        CLR P3.4
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY1
        LCALL DELY10MS
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY1
        MOV A,P3
        ANL A,#0FH
        CJNE A,#0EH,NK1
        MOV KEYBUF,#0
        LJMP DK1
        NK1: CJNE A,#0DH,NK2
        MOV KEYBUF,#1
        LJMP DK1
        NK2: CJNE A,#0BH,NK3
        MOV KEYBUF,#2
        LJMP DK1
        NK3: CJNE A,#07H,NK4
        MOV KEYBUF,#3
        LJMP DK1
        NK4: NOP
        DK1:
        MOV A,KEYBUF
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        MOV P0,A

        DK1A: MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JNZ DK1A
        NOKEY1:
        MOV P3,#0FFH
        CLR P3.5
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY2
        LCALL DELY10MS
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY2
        MOV A,P3
        ANL A,#0FH
        CJNE A,#0EH,NK5
        MOV KEYBUF,#4
        LJMP DK2
        NK5: CJNE A,#0DH,NK6
        MOV KEYBUF,#5
        LJMP DK2
        NK6: CJNE A,#0BH,NK7
        MOV KEYBUF,#6
        LJMP DK2
        NK7: CJNE A,#07H,NK8
        MOV KEYBUF,#7
        LJMP DK2
        NK8: NOP
        DK2:
        MOV A,KEYBUF
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        MOV P0,A

        DK2A: MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JNZ DK2A
        NOKEY2:
        MOV P3,#0FFH
        CLR P3.6
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY3
        LCALL DELY10MS
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY3
        MOV A,P3
        ANL A,#0FH
        CJNE A,#0EH,NK9
        MOV KEYBUF,#8
        LJMP DK3
        NK9: CJNE A,#0DH,NK10
        MOV KEYBUF,#9
        LJMP DK3
        NK10: CJNE A,#0BH,NK11
        MOV KEYBUF,#10
        LJMP DK3
        NK11: CJNE A,#07H,NK12
        MOV KEYBUF,#11
        LJMP DK3
        NK12: NOP
        DK3:
        MOV A,KEYBUF
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        MOV P0,A

        DK3A: MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JNZ DK3A
        NOKEY3:
        MOV P3,#0FFH
        CLR P3.7
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY4
        LCALL DELY10MS
        MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JZ NOKEY4
        MOV A,P3
        ANL A,#0FH
        CJNE A,#0EH,NK13
        MOV KEYBUF,#12
        LJMP DK4
        NK13: CJNE A,#0DH,NK14
        MOV KEYBUF,#13
        LJMP DK4
        NK14: CJNE A,#0BH,NK15
        MOV KEYBUF,#14
        LJMP DK4
        NK15: CJNE A,#07H,NK16
        MOV KEYBUF,#15
        LJMP DK4
        NK16: NOP
        DK4:
        MOV A,KEYBUF
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        MOV P0,A

        DK4A: MOV A,P3
        ANL A,#0FH
        XRL A,#0FH
        JNZ DK4A
        NOKEY4:
        LJMP WAIT
        DELY10MS:
        MOV R6,#10
        D1: MOV R7,#248
        DJNZ R7,$
        DJNZ R6,D1
        RET
        TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
        END

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 久治县| 嘉禾县| 拜泉县| 朔州市| 突泉县| 湖州市| 铅山县| 鄱阳县| 洛阳市| 化州市| 华容县| 丹巴县| 高唐县| 淮安市| 怀柔区| 个旧市| 栾川县| 依兰县| 延庆县| 白玉县| 英德市| 兴隆县| 天全县| 丰台区| 湖南省| 达尔| 中方县| 屏东县| 义乌市| 桑植县| 扎囊县| 望都县| 新津县| 香港| 郁南县| 伽师县| 浑源县| 竹北市| 翼城县| 阿克| 阿图什市|