📄 key_display_huang.asm
字号:
KEY1: ACALL KS1
JNZ LK1 ;不为0,有键盘按下,转
ACALL DIS ;调用显示子程序,延时6MS
AJMP KEY1
LK1: ACALL DIS ;调用显示子程序,延时12Ms
ACALL DIS
ACALL KS1
JNZ LK2
ACALL DIS ;调用显示子程序,延时6MS
AJMP KEY1
LK2: MOV R2,#11111011B
MOV R4,#00H ;从第0列开始,4*4键盘显示
LK4: MOV DPTR,#8002H ;位选
MOV A,R2
MOVX @DPTR,A
MOV DPTR ,#8001H ;键盘输入
MOVX A,@DPTR
JB ACC.0,LONE ;第0行
MOV A,#00H
AJMP LKP
LONE: JB acc.1,LTWO
MOV A,#04H ;第1行
AJMP LKP
LTWO: JB ACC.2,LTHR
MOV A,#08H ;第2行
AJMP LKP
LTHR:JB ACC.3,NEXT
MOV A,#0CH ;第3行
LKP: ADD A,R4
PUSH ACC
LK3: ACALL DIS
ACALL KS1
JNZ LK3
POP ACC
MOV 7BH,7AH
MOV 7AH,79H
MOV 79H,78H
MOV 78H,A
SJMP KEY1;RET
NEXT: INC R4 ;下一列
MOV A,R2
JNB ACC.5,KND
RL A
MOV R2,A
AJMP LK4
KND: AJMP KEY1
KS1: MOV DPTR ,#8002H ;判断是否有键盘按下
MOV A,#00H
MOVX @DPTR,A
MOV DPTR, #8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DIS: MOV R0,#78H ;动态显示子程序
MOV R3,#00000100B
MOV A,R3
LD0: MOV DPTR,#8002H ;位选
MOVX @DPTR,A
MOV DPTR,#8004H ;段选
MOV A,@R0
ADD A,#0DH
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL1
INC R0
MOV A,R3
JB ACC.5,LD1
RL A
MOV R3,A
AJMP LD0
LD1: RET
DSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;共阴表
DL1: MOV R7,#02H ;延时子程序
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -