
Preliminary W78E365
- 34 -
PROG_D_64K:
MOV SFRAL,R2
MOVX A,@DPTR
MOV SFRFD,A
MOV TCON,#10H
MOV PCON,#01H
INC DPTR
INC R2
CJNE R2,#0H,PROG_D_64K
INC R1
MOV SFRAH,R1
CJNE R1,#0H,PROG_D_64K
;*****************************************************************************
; * VERIFY 64KB APROM BANK
;*****************************************************************************
MOV R4,#03H
;ERROR COUNTER
MOV R6,#FBH
;SET TIMER FOR READ VERIFY, ABOUT 1.5us.
MOV R7,#FFH
MOV TL0,R6
MOV TH0,R7
MOV DPTR,#0H
;The start address of sample code
MOV R2,#0H
;Target low byte address
MOV R1,#0H
;Target high byte address
MOV SFRAH,R1
;SFRAH, Target high address
MOV SFRCN,#00H
;SFRCN = 00 (Read ROM CODE)
READ_VERIFY_64K:
MOV SFRAL,R2
;SFRAL(C4H) = LOW ADDRESS
MOV TCON,#10H
;TCON = 10H,TR0 = 1,GO
MOV PCON,#01H
INC R2
MOVX A,@DPTR
INC DPTR
CJNE A,SFRFD,ERROR_64K
CJNE R2,#0H,READ_VERIFY_64K
INC R1
MOV SFRAH,R1
CJNE R1,#0H,READ_VERIFY_64K
;******************************************************************************
;* PROGRAMMING COMPLETLY, SOFTWARE RESET CPU
;******************************************************************************
MOV CHPENR,#87H
;CHPENR = 87H
MOV CHPENR,#59H
;CHPENR = 59H
MOV CHPCON,#83H
;CHPCON = 83H, SOFTWARE RESET.
ERROR_64K:
DJNZ R4,UPDATE_64K ;IF ERROR OCCURS, REPEAT 3 TIMES.
.
;IN-SYSTEM PROGRAMMING FAIL, USER'S PROCESS TO DEAL WITH IT.
.
.
.
;SFRAL(C4H)= LOW BYTE ADDRESS
;READ DATA FROM EXTERNAL SRAM BUFFER
;SFRFD(C6H) = DATA IN
;TCON = 10H,TR0 = 1,GO
;ENTER IDLE MODE( PRORGAMMING)