📄 1.asm
字号:
LINE EQU 30H
ROW EQU 31H
ORG 00H
START:
MOV P2,#00H ;数码管显示初始化
MOV P0,#00H
SETB P3.7
LSCAN: MOV P1,#0F0H ;列线置高电平,行线置低电平
L1: JNB P1.0,L2 ;逐行扫描
LCALL DELAY
JNB P1.0,L2
MOV LINE,#00H ;存行号
LJMP RSCAN
L2: JNB P1.1,L3
LCALL DELAY
JNB P1.1,L3
MOV LINE,#01H ;存行号
LJMP RSCAN
L3: JNB P1.2,L4
LCALL DELAY
JNB P1.2,L4
MOV LINE,#02H ;存行号
LJMP RSCAN
L4: JNB P1.3,L1
LCALL DELAY
JNB P1.3,L1
MOV LINE,#03H ;存行号
RSCAN: MOV P1,#0FH ;行线列线电平互换
C1: JNB P1.4,C2 ;逐列扫描
MOV ROW,#00H ;存列号
LJMP CALCU
C2: JNB P1.5,C3
MOV ROW,#01H ;存列号
LJMP CALCU
C3: JNB P1.6,C4
MOV ROW,#02H ;存列号
LJMP CALCU
C4: JNB P1.7,C1
MOV ROW,#03H ;存列号
CALCU: MOV A,LINE ;根据行号和列号计算按键编码
MOV B,#04H
MUL AB
ADD A,ROW
MOV TMOD,#20H
MOV TH1,#0E6H
MOV TL1,#0E6H
SETB TR1
MOV SCON,#50H
MOV SBUF,A
G0: JBC TI,G1
AJMP G0
G1: JBC RI,G2
AJMP G1
G2: MOV A,SBUF
CPL P3.7
JB P3.7,S0
MOV P2,A
ACALL DELAY
ACALL DELAY
LJMP LSCAN
S0: MOV P0,A
ACALL DELAY
ACALL DELAY
LJMP LSCAN
DELAY: MOV R6,#80
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -