⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api_canary.a51

📁 AT89C51CC03CAN引导程序C51原代码
💻 A51
字号:
 NAME API_CANARY; 
;*A51**************************************************************************
; FILE_NAME         : API_CANARY.a51                                             
;----------------------------------------------------------------------------
; FILE_CREATED_BY   : BERTHY JS                                             
; FILE_CREATION_DATE: 14/01/00                                              
;----------------------------------------------------------------------------
; FILE_PURPOSE: low level function for API  
;******************************************************************************
  PUBLIC API_ERASE_BLOC_8K ;
  PUBLIC API_ERASE_BLOC_16K;
  PUBLIC API_FULL_CHIP_ERASE;

  PUBLIC API_WR_FLASH_CL;

  PUBLIC API_RD_HW ;
  PUBLIC API_RD_XAF  ;
  PUBLIC API_RD_FLASH ;


  PUBLIC API_LAUNCH_PRG_FLASH;
  PUBLIC API_LAUNCH_PRG_FUSE ;
  PUBLIC API_LAUNCH_PRG_XAF;
  PUBLIC API_LAUNCH_PRG_EEPROM;

	PUBLIC API_RD_EEPROM ;
	PUBLIC API_WR_EEPROM_CL;

	PUBLIC ASM_JMP_DPTR ;
	PUBLIC ASM_XRAM_FLASH ;

FCON	EQU	0D1h
EECON	EQU	0D2h
AUXR	EQU	08Eh
AUXR1	EQU	0A2h
SEL_USER_CL         EQU 008h

C_LATCH_SIZE	EQU	80h


START SEGMENT CODE
RSEG START

;*****************************************************************************
; FUNCTION_NAME: API_RD_XAF
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_RD_XAF:
  MOV	FCON, #0FBh 	;RAZ field FMOD and select XROW array
	Jmp	READ_XAF	

;*****************************************************************************
; FUNCTION_NAME: API_RD_FLASH
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_RD_FLASH:
  Mov	FCON, #0F8h 	;RAZ field FMOD and select user array
	Jmp	READ_XAF	

;*****************************************************************************
; FUNCTION_NAME: API_RD_HW
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_RD_HW:
  Mov		FCON, #04h 	;RAZ field FMOD and select HW array

READ_XAF:
  Clr		A
  Movc	A, @A+DPTR 
  Mov		FCON, #0F0h
Ret


;*****************************************************************************
; FUNCTION_NAME: API_WR_FLASH_CL
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_WR_FLASH_CL:
  Mov		FCON,	#08h    ; set bit FPS for access to the column latches
  Movx	@DPTR, A     	; write in column latches
  Mov		FCON,	#00h    ; set bit FPS for access to the column latches
Ret

;*****************************************************************************
; FUNCTION_NAME: API_WR_EEPROM_CL
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_WR_EEPROM_CL:
  Mov		EECON, #02h    ; set bit FPS for access to the column latches
  Movx	@DPTR, A     	; write in column latches
  Mov		EECON, #00h    ; set bit FPS for access to the column latches
Ret

;*****************************************************************************
; FUNCTION_NAME: API_RD_EEPROM
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_RD_EEPROM:
  Mov		EECON, #02h 	
  Movx	A, @DPTR 
  Mov		EECON, #00h
Ret

;*****************************************************************************
; FUNCTION_NAME: API_LAUNCH_PRG_EEPROM
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_LAUNCH_PRG_EEPROM:
  Mov 	EECON, #50h
  Mov 	EECON, #0A0h

WAIT_EBUSY:
  Mov  	A, EECON
  Jb	Acc.0, WAIT_EBUSY
Ret


;*****************************************************************************
; FUNCTION_NAME: API_FULL_CHIP_ERASE
; FUNCTION_NAME: API_ERASE_BLOC_8K
; FUNCTION_NAME: API_ERASE_BLOC_16K
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_ERASE_BLOC_8K:
  Mov 	R0, #40h	 ; init loop
  Jmp 	FILL_FLASH ;

API_ERASE_BLOC_16K:
  Mov 	R0, #80h	 ; init loop
  Jmp 	FILL_FLASH ;

API_FULL_CHIP_ERASE:
	; Modification for CC03, first erase flash, then XAF (with Secu)

  Mov DPTR, #000h
  Mov R0, #000h	 ; init loop
  Call  FILL_FLASH 	;Modification for CC03: twice 32k
	Call 	FILL_FLASH

	; Init XAF with default values
  Mov 	A, #0FFh
  Mov 	DPH, #000h
  Mov 	DPL, #000h ; Erase BSB
  Call 	API_WR_FLASH_CL

  Mov 	DPL, #001h ; Erase SBV
  Call 	API_WR_FLASH_CL

  Mov 	DPL, #005h ; Erase SSB
  Call 	API_WR_FLASH_CL

  Mov 	DPL, #006h ; Erase EB
  Call 	API_WR_FLASH_CL
	Call	API_LAUNCH_PRG_XAF;
	ret


FILL_FLASH:
  Mov 	A, #0FFh
  Mov 	R1, #C_LATCH_SIZE ;
  
FILL_C_LATCH:
  Call 	API_WR_FLASH_CL  
  Inc 	DPTR	       ;
  Djnz 	R1, FILL_C_LATCH  ;
	Call	API_LAUNCH_PRG_FLASH;
  Djnz	R0, FILL_FLASH ;
Ret

;*****************************************************************************
; FUNCTION_NAME: API_LAUNCH_PRG_FUSE
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_LAUNCH_PRG_FUSE:
  Mov		FCON, #0Ch 		;RAZ field FMOD and select HW array
  Movx	@DPTR, A     	; write in column latches
  Mov 	FCON, #54h
  Mov 	FCON, #0A4h
	Jmp		WAIT_FBUSY

;*****************************************************************************
; FUNCTION_NAME: API_LAUNCH_PRG_XAF
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_LAUNCH_PRG_XAF:
  Mov 	FCON, #52h
  Mov 	FCON, #0A2h
	Jmp		WAIT_FBUSY

;*****************************************************************************
; FUNCTION_NAME: API_LAUNCH_PRG_FLASH
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_LAUNCH_PRG_FLASH_PE:
API_LAUNCH_PRG_FLASH:
  Mov 	FCON, #50h
  Mov 	FCON, #0A0h
  nop
WAIT_FBUSY:
WAIT_FBUSY_PE:
  Mov  	A, FCON
  Jb		ACC.0, WAIT_FBUSY
	Mov		FCON, #00h
Ret


;*****************************************************************************
; FUNCTION_NAME: ASM_JMP_DPTR
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
ASM_JMP_DPTR:
	Clr		A
  Jmp 	@A+DPTR
Ret

;*****************************************************************************
; FUNCTION_NAME: ASM_XRAM_FLASH
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
ASM_XRAM_FLASH:

    movx    A,@DPTR                 ; read one source byte
    inc     DPTR

    inc     AUXR1                   
    orl     FCON,#SEL_USER_CL       ; map USER column latch in XRAM space
    movx    @DPTR,A                 ; copy data in CL
    inc     DPTR
    anl     FCON,#NOT(SEL_USER_CL)  ; map data in XRAM space
    inc     AUXR1
Ret

;*****************************************************************************
; FUNCTION_NAME: API_LAUNCH_PRG_FLASH_PE
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
                 


CSEG at 0FFF3h
jmp	API_LAUNCH_PRG_FLASH_PE

END









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -