📄 ex5108.asm
字号:
DISBUF EQU 30H
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,#50H
MOV DPTR,#P_CON
MOV A,#03H
MOVX @DPTR,A
MOV R0,#DISBUF
MOV R1,#06H
MOV A,#10H
LP1: MOV @R0,A
INC R0
DJNZ R1,LP1
;
LP2: ACALL DISPLAY
;
ACALL INKEY
CJNE A,#0FFH,FLASH
SJMP LP2
;
FLASH: MOV DISBUF+5,DISBUF+4
MOV DISBUF+4,DISBUF+3
MOV DISBUF+3,DISBUF+2
MOV DISBUF+2,DISBUF+1
MOV DISBUF+1,DISBUF
MOV DISBUF,A
SJMP LP2
;
INKEY: ACALL IS_KEY
CJNE A,#0FFH,SK1
SJMP KEY_DONE
;
SK1: ACALL DISPLAY
ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,SK2
SJMP KEY_DONE
;
SK2: MOV R3,#0FEH
MOV R4,#00H
LP3: MOV DPTR,#PORT_A
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#PORT_C
MOVX A,@DPTR
JB ACC.0,LONE
MOV A,#00H
SJMP LKP
;
LONE: JB ACC.1,NEXT
CLR A
ADD A,#02H
SJMP LKP
NEXT: MOV A,R4
MOV B,#04H
DIV AB
MOV A,B
CJNE A,#01H,NEXT1
MOV A,#02H
ADD A,R4
MOV R4,A
NEXT1: INC R4
MOV A,R3
SETB C
RLC A
DEC A
MOV R3,A
JC LP3
MOV A,#0FFH
SJMP KEY_DONE
;
LKP: ADD A,R4
MOV DPTR,#KEYDATA
MOVC A,@A+DPTR
PUSH ACC
LP4: ACALL DISPLAY
ACALL IS_KEY
CJNE A,#0FFH,LP4
POP ACC
KEY_DONE: RET
KEYDATA:DB 07H,04H,01H,00H,08H,05H,02H,0FH
DB 09H,06H,03H,0EH,0AH,0BH,0CH,0DH
IS_KEY: MOV DPTR,#PORT_A
CLR A
MOVX @DPTR,A
MOV DPTR,#PORT_C
MOVX A,@DPTR
ORL A,#0FCH
RET
;
DISPLAY:MOV R0,#DISBUF+5
MOV R2,#20H
DIS_LP: MOV DPTR,#SEG_TAB
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
;
SEG_TAB:DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 99H
DB 92H
DB 82H
DB 0F8H
DB 80H
DB 90H
DB 88H
DB 83H
DB 0C6H
DB 0A1H
DB 86H
DB 8EH
DB 0FFH
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -