key扫描 逐行扫描法.asm

来自「51单片机矩阵键盘扫描扫描之逐行扫描法.asm程序」· 汇编 代码 · 共 50 行

ASM
50
字号
        ORG   0000H
        SJMP  START
START:  MOV   SP,#60H
;*********P1.7~P1.4为列线的4~1
;*********P1.3~P1.0为行线的4~1
KEYSCAN:MOV   R2,#00H    ;用于存放键值
        MOV   P1,#0FH
        MOV   A,P1
        ANL   A,#0FH
        CJNE  A,#0FH,SCAN
        SJMP  KEYSCAN
SCAN:   ACALL DEL10MS
        MOV   P1,A
        ANL   A,#0FH
        CJNE  A,#0FH,KEY
        SJMP  KEYSCAN
KEY:    MOV   R3,#0EFH   ;扫描行初值
        MOV   R4,#00H    ;扫描次数初值
        MOV   A,R3
L1:     MOV   P1,A
        MOV   A,P1
        JB    ACC.0,L2
        MOV   A,#00H
        AJMP  KEYREAD
L2:     JB    ACC.1,L3
        MOV   A,#04H
        AJMP  KEYREAD
l3:     JB    ACC.2,L4
        MOV   A,#08H
        AJMP  KEYREAD
L4:     JB    ACC.3,NEXT
        MOV   A,#0CH
        AJMP  KEYREAD
NEXT:   INC   R4
        MOV   A,R3
        RL    A
        MOV   R3,A
        CJNE  R4,#04H,L1
        AJMP  KEYSCAN
KEYREAD:ADD   A,R4
        MOV   R2,A      ;扫描所得到的键值存于R2中
        AJMP  KEYSCAN
;**********************10MS      
DEL10MS:MOV   R7,#50
DEL11:  MOV   R6,#100
DEL10:  DJNZ  R6,DEL10
        DJNZ  R7,DEL11
        RET
        
        END                       

⌨️ 快捷键说明

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