📄 boot_process.a51
字号:
;*A**************************************************************************
; NAME: api.a51
;----------------------------------------------------------------------------
; REVISION: $version: $
;----------------------------------------------------------------------------
; PURPOSE: This file the softawre boot process after RESET
;
;----------------------------------------------------------------------------
; NOTES:
;
;****************************************************************************
; CHANGES:
;
;****************************************************************************
$TITLE (*** Bootprocess ***)
SOFT_BOOT_PROCESS SEGMENT CODE
;_____ I N C L U D E S ____________________________________________________
$include (config.inc)
$include (register.inc)
PUBLIC boot_process
;_____ M A C R O S ________________________________________________________
;_____ D E F I N I T I O N ________________________________________________
EXTRN CODE (fm_read_xrow)
;_____ D E C L A R A T I O N ______________________________________________
;*F***************************************************************************
; NAME: boot_process
;-----------------------------------------------------------------------------
; PARAMS:
;
; RETURN:
;
;-----------------------------------------------------------------------------
; PURPOSE:
;
;*****************************************************************************
RSEG SOFT_BOOT_PROCESS
boot_process:
mov A,FCON
cjne A,#PROG_BOOT_VALUE,atmel_init ; test FCON F0h or 00h
mov DPL,#SBV_ADDRESS
acall fm_read_xrow ; read Software Boot Vector: A <- SBV
mov R0,A ; save SBV
clr C
subb A,#BOOT_BASE_ADDRESS ; if SBV >= boot base address
jnc atmel_init ; exec Atmel boot else User boot
user_boot:
mov DPH,R0 ; restore SBV
clr A
mov DPL,A
jmp @A+DPTR ; jump to user's boot loader at @ [SBV]00h
atmel_init:
ret
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -