📄 开关键盘控制显示.txt
字号:
ORG 0000H
MAIN: MOV SP,#70H
MOV A,#03H;把控制命令放到a中
MOV DPTR,#0FF20H;控制命令地址
MOVX @DPTR,A;把对应的控制命令放到81c55
LOOP2:MOV R1,#0FEH;用于一位作用
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中
CALL YANCHI;调用延迟程序
INC R0
CJNE R0,#36H,LOOP1
JMP LOOP2
TABLE:DB 0CFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
YANCHI:
MOV R6,#0FFH
MOV A,#0FFH
LOOP:
ACALL KEYP
LOOP3: DEC R6
MOV R5,A
MOV A,R6
CJNE A,00H,LOOP3
MOV A,R5
DEC A
CJNE A,00H,LOOP
RET
KEYP:
PUSH ACC;对a进行入栈保护
MOV A,P1;把p1口的地址放到a中
ORL A,#0C0H;将a的高两位置为11
CPL A
JZ OVER;没有按键被按下
JNB ACC.0,OVER1;第一位没有被按下
MOV @R0,#1H
SJMP OVER
OVER1:JNB ACC.1,OVER2;第二位没有被按下
MOV @R0,#2H
SJMP OVER
OVER2:JNB ACC.2,OVER3;第三位没有被按下
MOV @R0,#3H
SJMP OVER
OVER3:JNB ACC.3,OVER4;第四位没有被按下
MOV @R0,#4H
SJMP OVER
OVER4:JNB ACC.4,OVER5;第五位没有被按下
MOV @R0,#5H
SJMP OVER
OVER5:MOV @R0,#6H;定是第六位被按下了
OVER: POP ACC
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -