📄 sys_init.asm
字号:
;===========================================================================
; 文件名: Sys_init.asm
;
; 模块名: SYS_INIT
;
; 功能描述: 初始化 F24x/xx 设备
;
; 公司: 达盛科技
;
; 修改记录:
;
; 最后更新日期: 2005.7.29
;===========================================================================
.include x24x_app.h
.def SYS_INIT
.ref GPR0
stack_size .set 20h
stack_start .usect "stack",stack_size
SYS_INIT:
;---目标板选择---------------
.if (x240)
POINT_PG0
SETC INTM ;禁止中断
SPLK #0h, IMR ;屏蔽所有中断
SPLK #0FFh, IFR ;清所有中断标志
CLRC SXM ;禁止符号扩展
CLRC OVM ;清溢出标志
CLRC CNF ;设置 Block B0 为数据存储器
LAR AR1, #stack_start ;初始化堆栈指针
MAR *,AR1
POINT_B0
SPLK #04h, GPR0 ;Set 0 wait states for XMIF
OUT GPR0, WSGR
POINT_PF1
SPLK #0041h,PLL_CNTL1 ;Disable PLL first.=CPUCLK/2,
SPLK #00B1h,PLL_CNTL2 ;CLKIN(XTAL)=10MHz, PLL*2.0=20MHz
; SPLK #0081h,PLL_CNTL1 ;CLKMD=PLL Enable,f_SYSCLK=f_CPUCLK/2
SPLK #0080h,PLL_CNTL1 ;CLKMD=PLL Enable,f_SYSCLK=f_CPUCLK/4
SPLK #40C0h,SYSCR ;CLKOUT=CPUCLK
;Comment out if WD is to be active
SPLK #006Fh, WD_CNTL ;如果 VCCP=5V则禁止WD
KICK_DOG
RET
.endif
;-----------------------------------
.if (x243)
POINT_PG0
SETC INTM ;Disable interrupts
SPLK #0h, IMR ;Mask all Ints
SPLK #0FFh, IFR ;Clear all Int Flags
;Init PDP interrupt flag after reset
LDP #PIRQR0>>7
LACC PIRQR0 ; Clear pending PDP flag
AND #0FFFEh
SACL PIRQR0
POINT_EV
LACC EVIFRA ; Clear PDP int flag
OR #0001h
SACL EVIFRA
POINT_PG0
CLRC SXM ;Clear Sign Extension Mode
CLRC OVM ;Reset Overflow Mode
CLRC CNF ;Config Block B0 to Data mem.
SPM 0
LAR AR1, #stack_start ;Init s/w stack pointer
MAR *,AR1
POINT_B0
SPLK #0040h, GPR0 ;Set 0 wait states for XMIF
OUT GPR0, WSGR
POINT_PF1
SPLK #40C0h,SYSCR ;CLKOUT=CPUCLK
;Comment out if WD is to be active
SPLK #006Fh, WD_CNTL ;如果 VCCP=5V则禁止WD
KICK_DOG
RET
.endif
;-----------------------------------
.if (x2407)
POINT_PG0
SETC INTM ;禁止中断
SPLK #0h, IMR ;屏蔽中断申请
SPLK #0FFh, IFR ;清除中断标志
;Init PDP interrupt flag after reset
LDP #PIRQR0>>7
LACC PIRQR0 ; Clear pending PDP flag
AND #0FFFEh
SACL PIRQR0
LACC PIRQR2 ; Clear pending PDP flag
AND #0FFFEh
SACL PIRQR2
LDP #MCRB>>7
;SPLK #0FE3FH,MCRB
LACC MCRB
OR #003CH
SACL MCRB
POINT_EV
LACC EVAIFRA ; Clear PDPINTA flag
OR #0001h
SACL EVAIFRA
LDP #EVBIFRA>>7
LACC EVBIFRA ; Clear PDPINTB flag
OR #0001h
SACL EVBIFRA
POINT_PG0
CLRC SXM ;Clear Sign Extension Mode
CLRC OVM ;Reset Overflow Mode
CLRC CNF ;Config Block B0 to Data mem.
SPM 0
LAR AR1, #stack_start ;Init s/w stack pointer
MAR *,AR1
POINT_B0
SPLK #00C0h, GPR0 ;Set 1 wait states for I/O space
OUT GPR0, WSGR
POINT_PF1
.if (x4_PLL)
SPLK #00A5h, SCSR1 ; x4 PLL, ADC en, EV1 en, clr Ill Addr flg
.endif
.if (x2_PLL)
SPLK #02A5h, SCSR1 ; x2 PLL, ADC en, EV1 en, clr Ill Addr flg
.endif
;Comment out if WD is to be active
SPLK #006Fh, WD_CNTL ;如果 VCCP=5V则禁止WD
KICK_DOG
RET
.endif
;-----------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -