
Preliminary W77E516
- 84 -
BLANK_CHECK_ERROR:
JMP $
;*******************************************************************************
;* RE-PROGRAMMING 64KB APROM BANK
;*******************************************************************************
PROGRAM_64KROM:
MOV R2, #00H
MOV R1, #00H
MOV DPTR, #0H
MOV SFRAH, R1
MOV SFRCN, #21H
MOV R6, #9CH
MOV R7, #FFH
MOV TL0, R6
MOV TH0, R7
PROG_D_64K:
; TARGET LOW BYTE ADDRESS
; TARGET HIGH BYTE ADDRESS
; SFRAH, TARGET HIGH ADDRESS
; SFRCN = 21H, PROGRAM 64K APROM0
; SFRCN = A1H, PROGRAM 64K APROM1
; SET TIMER FOR PROGRAMMING, ABOUT 50
μ
S.
MOV SFRAL,R2
CALL GET_BYTE_FROM_PC_TO_ACC ; THIS PROGRAM IS BASED ON USER’S CIRCUIT.
MOV @DPTR, A
; SAVE DATA INTO SRAM TO VERIFY CODE.
MOV SFRFD, A
; SFRFD = DATA IN
MOV TCON, #10H
; TCON = 10H, TR0 = 1,GO
MOV PCON, #01H
; ENTER IDLE MODE (PRORGAMMING)
INC DPTR
INC R2
CJNE R2, #0H, PROG_D_64K
INC R1
MOV SFRAH, R1
CJNE R1,#0H, PROG_D_64K
; SFRAL = LOW BYTE ADDRESS
;*****************************************************************************
; * VERIFY 64KB APROM BANK
;*****************************************************************************
MOV R4, #03H
MOV R6, #FDH
MOV R7, #FFH
MOV TL0, R6
MOV TH0, R7
MOV DPTR, #0H
MOV R2, #0H
MOV R1, #0H
MOV SFRAH, R1
MOV SFRCN, #00H
READ_VERIFY_64K:
MOV SFRAL,R2
MOV TCON, #10H
MOV PCON, #01H
INC R2
MOVX A, @DPTR
INC DPTR
CJNE A, SFRFD, ERROR_64K
; ERROR COUNTER
; SET TIMER FOR READ VERIFY, ABOUT 1.5
μ
S.
; The start address of sample code
; Target low byte address
; Target high byte address
; SFRAH, Target high address
; SFRCN = 00H, Read APROM0
;SFRCN = 80H , Read APROM1
; SFRAL = LOW ADDRESS
; TCON = 10H, TR0 = 1,GO