📄 矩阵键盘及显示器.txt
字号:
ORG 0000H
MAIN: MOV SP,#70H
MOV A,#03H;把控制命令放到a中
MOV DPTR,#0FF20H;控制命令地址
MOVX @DPTR,A;把对应的控制命令放到81c55
LOOP2:MOV R1,#0FEH;用于一位作用
MOV R2,#0
MOV R0,#30H;6个数字所在的首地址
LOOP1:MOV DPTR,#TABLE;将要查的数方到dptr中
MOV A,@R0;把r0的数放到a中
MOVC A,@A+DPTR;转码所得数方到a中
MOV DPTR,#0FF22H;把pb口地址方到dptr中
MOVX @DPTR,A;把要显示的数放到pb口上
MOV A,R1;把位控制方到a中
MOV DPTR,#0FF21H;把pa口地址放到dptr中
MOVX @DPTR,A
RL A;左移一位
MOV R1,A;把移位的数方到r1中
ACALL YANCHI;调用延迟程序
INC R0
INC R2
CJNE R2,#6H,LOOP1
ACALL YANCHI
INC R2
ACALL YANCHI
JMP LOOP2
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,8CH,0C1H,0CEH,91H,89H,0C7H,0FFH
YANCHI:
MOV R7,#12
DEL1:MOV R6,#20
DEL2:ACALL KEYP
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
YANCHI1:
MOV R5,#0
DEL3: DJNZ R5,DEL3
RET
KEYP:
MOV DPTR,#0FF23H;读取pc口的数据放到A中
MOVX A,@DPTR
ORL A,#0F0H;将高4位置为1111
CPL A;将a中各位取反
JZ OVER;没有键盘被按下
ACALL YANCHI1 ;去除抖动
MOVX A,@DPTR
ORL A,#0F0H;将高4位置为1111
CPL A;将a中各位取反
JZ OVER;没有键盘被按下及是抖动
JNB ACC.0,OVER1
MOV A,R2
MOV @R0,A
JMP OVER
OVER1: JNB ACC.1,OVER2
MOV A,R2
ADD A,#08H
MOV @R0,A
JMP OVER
OVER2:JNB ACC.2,OVER3
MOV A,R2
ADD A,#16
MOV @R0,A
JMP OVER
OVER3:MOV A,R2
ADD A,#24
MOV @R0,A
OVER:
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -