⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 键盘检测.asm

📁 本人做矩阵按键实验时所用的编码程序
💻 ASM
字号:
 ;*************************************************************
 ;程序名称:矩阵键盘检测
 ;程序编写      联系QQ:
 ;程序功能:4*4矩阵键盘检测与显示 
 ;程序最后修改时间:2008/8/1
 ;矩阵键盘案件分布图
   ;  |  |  |  |
   ;--0--1--2--3--
   ;  |  |  |  |
   ;--4--5--6--7--
   ;  |  |  |  |
   ;--8--9--a--b--
   ;  |  |  |  |
   ;--c--d--e--f--
   ;  |  |  |  |
 ;*************************************************************
       KEYBUF      EQU 30H
            dula bit P2.6          ;选择断控制芯片
            wela bit P2.7          ;选择位控制芯片

        

            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
            mov p1,#11111110b
            LJMP DK1
        NK1:CJNE A,#0DH,NK2
            MOV KEYBUF,#4
            mov p1,#11111100b
            LJMP DK1
        NK2:CJNE A,#0BH,NK3
            MOV KEYBUF,#8
            mov p1,#11111000b
            LJMP DK1
        NK3:CJNE A,#07H,NK4
            MOV KEYBUF,#12
            mov p1,#11110000b
            LJMP DK1
        NK4:NOP
        DK1:call display

       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,#1
            mov p1,#11111110b
            LJMP DK2
        NK5:CJNE A,#0DH,NK6
            MOV KEYBUF,#5
            mov p1,#11111100b
            LJMP DK2
        NK6:CJNE A,#0BH,NK7
            MOV KEYBUF,#9
            mov p1,#11111000b
            LJMP DK2
        NK7:CJNE A,#07H,NK8
            MOV KEYBUF,#13
            mov p1,#11110000b
            LJMP DK2
        NK8:NOP
        DK2:call display
       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,#2
            mov p1,#11111110b
            LJMP DK3
        NK9:CJNE A,#0DH,NK10
            MOV KEYBUF,#6
            mov p1,#11111100b
            LJMP DK3
       NK10:CJNE A,#0BH,NK11
            MOV KEYBUF,#10
            mov p1,#11111000b
            LJMP DK3
       NK11:CJNE A,#07H,NK12
            MOV KEYBUF,#14
            mov p1,#11110000b
            LJMP DK3
       NK12:NOP
        DK3:call display
       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,#3
            mov p1,#11111110b
            LJMP DK4
       NK13:CJNE A,#0DH,NK14
            MOV KEYBUF,#7
            mov p1,#11111100b
            LJMP DK4
       NK14:CJNE A,#0BH,NK15
            MOV KEYBUF,#11
            mov p1,#11111000b
            LJMP DK4
       NK15:CJNE A,#07H,NK16
            mov p1,#11110000b
            MOV KEYBUF,#15
            LJMP DK4
       NK16:NOP
        DK4:call display
       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


    display:MOV A,KEYBUF        ;查表
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR

            MOV P0,A
            setb dula
            clr dula
            mov P0,#0c0h
            setb wela
            clr wela
            clr p2.3
            acall ds1ms         ;延时,以便人眼可以观察到
            setb p2.3
           ;acall ds1ms
            ret

ds1ms: mov r1,#1
ds1lo: mov r2,#200
ds2lo: mov r3,#200
       djnz r3,$
       djnz r2,ds2lo
       djnz r1,ds1lo
       ret ;延时返回
TABLE:      DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
            DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
            END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -