📄 ex5122.asm
字号:
D_BUF EQU 77H
P_CON EQU 0FF20H
PORT_A EQU 0FF21H
PORT_B EQU 0FF22H
PORT_C EQU 0FF23H
;
ORG 0000H
LJMP START
;
ORG 0030H
START: MOV SP,#60H
MOV DPTR,#P_CON ;8155控制字
MOV A,#03H
MOVX @DPTR,A
MOV R0,#D_BUF
MOV R7,#6
LP0: MOV @R0,#10H ;关显示
INC R0
DJNZ R7,LP0
LCALL DISPLAY
MOV R7,#6
MOV R0,#D_BUF
LP1: SETB PSW.3
LCALL KEYIN
CLR PSW.3
MOV @R0,A
INC R0
DJNZ R7,LP1
SETB PSW.3
LCALL KEYIN
CLR PSW.3
LCALL QUE
LCALL DISPLAY
SETB PSW.3
LCALL KEYIN
CLR PSW.3
;
SJMP START
;
QUE: CLR 7FH
MOV R0,#D_BUF
MOV R7,#6
MOV A,@R0
L2: INC R0
MOV R2,A
SUBB A,@R0
MOV A,R2
JC L4
SETB 7FH
XCH A,@R0
DEC R0
XCH A,@R0
INC R0
L4: MOV A,@R0
DJNZ R7,L2
JB 7FH,QUE
RET
DISPLAY:MOV R0,#D_BUF+5 ;显示子程序
MOV R2,#20H
DIS_LP: MOV DPTR,#DATACO
MOV A,@R0
MOVC A,@A+DPTR
MOV DPTR,#PORT_B
MOVX @DPTR,A
MOV DPTR,#PORT_A
MOV A,R2
MOVX @DPTR,A
MOV R3,#00H
DJNZ R3,$
DEC R0
MOV A,R2
RR A
MOV R2,A
JNB ACC.7,DIS_LP
RET
DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
KEYIN: ACALL DISPLAY ;键扫子程序
ACALL INKEY
CJNE A,#0FFH,FLASH
SJMP KEYIN
FLASH: RET
INKEY:
ACALL IS_KEY
CJNE A,#0FFH,SK1
SJMP KEYSM10
SK1: ACALL DISPLAY
ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,KEYSM
SJMP KEYSM10
KEYSM:
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A
KEYSM0: MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
KEYSM1: MOV A,R2
MOV DPTR,#0FF21H
MOVX @DPTR,A
NOP
RL A
MOV R2,A
MOV DPTR,#0FF23H
MOVX A,@DPTR
CPL A
NOP
NOP
NOP
ANL A,#0FH
JNZ KEYSM2
INC R0 ;没有按键
DJNZ R3,KEYSM1
SJMP KEYSM10
KEYSM2: ;有按键
CPL A ;判断键号
JB 0E0H,KEYSM3
MOV A,#00H
SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
MOV A,#08H
SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
MOV A,#10H
SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM12
MOV A,#18H
KEYSM7: ADD A,R0
CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM12
MOV DPTR,#KEYDATA
MOVC A,@A+DPTR
KEYSM12:PUSH ACC ;等按键释放
KEYSM11:ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,KEYSM11
POP ACC
KEYSM10:RET
IS_KEY: MOV DPTR,#PORT_A ;是否按键
CLR A
MOVX @DPTR,A
MOV DPTR,#PORT_C
MOVX A,@DPTR
ORL A,#0FCH
RET
KEYDATA:DB 07H,04H,08H,05H,09H,06H,0AH,0BH
DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -