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

📄 api_canary.a51

📁 T89C51CC01 uart BOOTLOAD
💻 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 ;


FCON	EQU	0D1h
EECON	EQU	0D2h
AUXR	EQU	08Eh

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, #0F0h 	;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:
  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 BSB
  Call 	API_WR_FLASH_CL

	Call	API_LAUNCH_PRG_XAF;

  Mov DPL, #000h
  Mov R0, #000h	 ; init loop
  Jmp FILL_FLASH ;

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:
  Mov 	FCON, #50h
  Mov 	FCON, #0A0h

WAIT_FBUSY:
  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: API_LAUNCH_PRG_FLASH_PE
;----------------------------------------------------------------------------
; NOTE:  
;*****************************************************************************
API_LAUNCH_PRG_FLASH_PE:
  Mov 	FCON, #50h
  Mov 	FCON, #0A0h

WAIT_FBUSY_PE:
  Mov  	A, FCON
  Jb		ACC.0, WAIT_FBUSY_PE
	Mov		FCON, #00h
Ret

CSEG at 0FFF3h
Ljmp	API_LAUNCH_PRG_FLASH_PE

END









⌨️ 快捷键说明

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