```
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV P1, #0FFH ; 74LS138???(????)
MOV P2, #00H ; LED????
MOV DPTR, #PATTERN_START
MOV R6, #00H ; ?????
MOV R7, #00H ; ????(0=??)
MOV 08H, #00H ; ????????
DISPLAY_LOOP:
ACALL BUTTON_CHECK
ACALL LOAD_PATTERN
ACALL DISPLAY_PATTERN
ACALL DISPLAY_COUNT
CJNE R7, #00H, MANUAL_MODE
AUTO_MODE:
ACALL DELAY
ACALL DPTR_INCREMENT
INC R6
CJNE R6, #40H, DISPLAY_LOOP ; ?64???(0-63)
MOV R6, #00H
AJMP DISPLAY_LOOP
MANUAL_MODE:
AJMP DISPLAY_LOOP
; ???????(???)
BUTTON_CHECK:
JB P3.0, CHECK_MODE
ACALL DELAY_20MS ; ????
JB P3.0, CHECK_MODE
ACALL CLEAR_BUTTON
CHECK_MODE:
JB P3.1, BTN_EXIT
ACALL DELAY_20MS
JB P3.1, BTN_EXIT
ACALL MODE_BUTTON
BTN_EXIT:
RET
CLEAR_BUTTON:
MOV DPTR, #PATTERN_START
MOV R6, #00H
RET
MODE_BUTTON:
CPL R7
RET
; ????????
LOAD_PATTERN:
MOV R0, #08H ; 8???
MOV R1, #08H ; ?????08H-0FH
LOAD_LOOP:
CLR A
MOVC A, @A+DPTR
MOV @R1, A
INC DPTR
INC R1
DJNZ R0, LOAD_LOOP
RET
; ???????
DISPLAY_PATTERN:
MOV R0, #08H
MOV R1, #08H
CLR P3.7 ; ????
SCAN_LOOP:
MOV A, @R1
MOV P2, A ; ???
MOV A, #08H
SUBB A, R0 ; ??????(0-7)
MOV P1, A
ACALL DELAY_1MS
INC R1
DJNZ R0, SCAN_LOOP
SETB P3.7 ; ???????
RET
; ????????
DISPLAY_COUNT:
MOV A, R6
MOV B, #10
DIV AB
MOV 00H, A ; ???00H
MOV 01H, B ; ???01H
MOV A, 00H ; ????
ACALL SEG_CONVERT
MOV P0, A
CLR P3.2 ; ????
ACALL DELAY_1MS
SETB P3.2
MOV A, 01H ; ????
ACALL SEG_CONVERT
MOV P0, A
CLR P3.3 ; ????
ACALL DELAY_1MS
SETB P3.3
RET
SEG_CONVERT: ; ????????
INC A
MOVC A, @A+PC
RET
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H
DELAY: ; ????(?250ms)
MOV R5, #250
DL1: MOV R4, #200
DL2: DJNZ R4, DL2
DJNZ R5, DL1
RET
DELAY_20MS: ; ??????
MOV R3, #40
DL3: MOV R4, #250
DL4: DJNZ R4, DL4
DJNZ R3, DL3
RET
DELAY_1MS: ; ????
MOV R4, #250
DJNZ R4, $
RET
DPTR_INCREMENT: ; ??????
MOV A, #08H
ADD A, DPL
MOV DPL, A
MOV A, DPH
ADDC A, #00H
MOV DPH, A
RET
; ????????(8x8??)
PATTERN_START:
; ??0
DB 00111100B, 01000010B, 01000010B, 01000010B, 01000010B, 01000010B, 01000010B, 00111100B
; ??1
DB 00001000B, 00011000B, 00101000B, 00001000B, 00001000B, 00001000B, 00001000B, 00111110B
; ... (????64?????)
; ??63
DB 01111110B, 01000000B, 01000000B, 01111100B, 01000000B, 01000000B, 01000000B, 01000000B
END```出现错误:ZXCVBNM.a51(52): error A40: INVALID REGISTER请修改
最新发布