📄 ex5123.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
LP2: SETB PSW.3
LCALL KEYIN
CLR PSW.3
MOV 7CH,A
LCALL RTAB
LCALL DISPLAY
SJMP LP2
RTAB: MOV DPTR,#TAB1
ANL A,#0FH
RL A
MOV R2,A
MOVC A,@A+DPTR
MOV R0,#7AH
LCALL SUB1
MOV A,R2
INC A
MOVC A,@A+DPTR
MOV R0,#78H
LCALL SUB1
RET
;
SUB1: MOV R3,A
ANL A,#0F0H
SWAP A
MOV @R0,A
MOV A,R3
ANL A,#0FH
DEC R0
MOV @R0,A
RET
;
TAB1: DW 0123H
DW 1234H
DW 2345H
DW 3456H
DW 4567H
DW 5678H
DW 6789H
DW 789AH
DW 89ABH
DW 9ABCH
DW 0ABCDH
DW 0BCDEH
DW 0CDEFH
DW 0DEF0H
DW 0EF01H
DW 0F012H
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 + -