📄 init_54x.inc
字号:
* Status Register 0 (ST0) Initialization
K_ARP .set 000b<<13 ; ARP can be addressed from 000b -111b; reset value
K_TC .set 1b<<12 ; TC = 1 at reset
K_C .set 1b<<11 ; C = 1 at reset
K_OVA .set 1b<<10 ; OVA = 0 at reset, Set OVA
K_OVB .set 1b<< 9 ; OVB = 0 at reset, Set OVB
K_DP .set 000000000b<<0 ; DP is cleared to 0 at reset
K_ST0 .set K_ARP|K_TC|K_C|K_OVA|K_OVB|K_DP
* Status Register 1 (ST1) Initialization
K_BRAF .set 0b << 15 ; BRAF = 0 at reset
K_CPL .set 0b << 14 ; CPL = 0 at reset
K_XF .set 1b << 13 ; XF = 1 at reset
K_HM .set 0b << 12 ; HM = 0 at reset
K_INTM .set 1b << 11 ; INTM = 1
K_ST1_RESR .set 0b << 10 ; reserved
K_OVM .set 1b << 9 ; OVM = 0 at reset
K_SXM .set 1b << 8 ; SXM = 1 at reset
K_C16 .set 0b << 07 ; C16 = 0 at reset
K_FRCT .set 1b << 06 ; FRCT = 0 at reset, Set FRCT
K_CMPT .set 0b << 05 ; CMPT = 0 at reset
K_ASM .set 00000b << 00 ; ASM = 0 at reset
K_ST1_HIGH .set K_BRAF|K_CPL|K_XF|K_HM|K_INTM|K_ST1_RESR|K_OVM|K_SXM
K_ST1_LOW .set K_C16|K_FRCT|K_CMPT|K_ASM
K_ST1 .set K_ST1_HIGH|K_ST1_LOW
* Program Memory Status Register (PMST) Initialization
K_IPTR .set 111111111b << 07 ; 111111111b at reset
K_MP_MC .set 1b << 06 ; 1 at reset
K_OVLY .set 1b << 05 ; OVLY = 0 at reset
K_AVIS .set 0b << 04 ; AVIS = 0 at reset
K_DROM .set 0b << 03 ; DROM = 0 at reset
K_CLKOFF .set 0b << 02 ; CLKOFF = 0 at reset
K_PMST_RESR .set 00b << 0 ; reserved for 548
; bit 0 = SMUL saturation on mulitply
; bit 1 = SST = saturation on store
K_PMST .set K_IPTR|K_MP_MC|K_OVLY|K_AVIS|K_DROM|K_CLKOFF|K_PMST_RESR
* Software Wait State Register Organization (SWWSR) Initialization
K_SWWSR_IO .set 2000h ; set the I/O space
* Bank Switching Control Register (BSCR) Initialization
K_BNKCMP .set 0000b << 12 ; bank size = 64K
K_PS_DS .set 0b << 11
K_BSCR_RESR .set 000000000b <<2 ; reserved space
K_BH .set 0b << 1 ; BH = 0 at reset
K_EXIO .set 0b << 0 ; EXIO = 0 at reset
K_BSCR .set K_BNKCMP|K_PS_DS|K_BSCR_RESR|K_BH|K_EXIO
**********************************************************************
*时钟模式寄存器CLKMD
;PLLSTATUS为第0位,PLL工作状态位
;PLLNDIV为第1位,时钟发生器选择位
;PLLON/OFF为第2位,PLL通断位
;PLLCOUNT:3-10位,PLL计数器
;PLLDIV:11位,PLL除数
;PLLMUL:12-15位,PLL乘数
************************************************************
* CLKMD1 CLKMD2 CLKMD3 CLKMD CLOCK MODE
* RESET VALUE
* 0 0 0 E007h PLL*15
* 0 0 1 9007h PLL*10
* 0 1 0 4007h PLL*5
* 1 0 0 1007h PLL*2
* 1 1 0 F007h PLL*1
* 1 1 0 F007h 1/2
* 1 0 1 F007h 1/4
**********************************************************************
*****************寄存器的默认值设置************************************
K_ST0M .set 1800h
K_ST1M .set 2900h
;IO空间为2个等待周期,数据和程序空间为0个等待周期
K_SWWSR_IOM .set 7249h
K_BSCRM .set 0000h
K_PMSTMM .set 00A0h
;定时器控制寄存器的设置
K_TCR0_SOFT .set 0b<<11 ;软件调试控制位--控制定时器的工作状态
K_TCR0_FREE .set 0B<<10 ;软件调试控制位--控制定时器的工作状态
K_TCR0_PSC .set 1001B<<6;预标定值 10ns
K_TCR0_TRB .set 1B<<5 ;定时器重新加载 --是否可以自动重装载:可以
K_TCR0_TSS .set 1B<<4 ;定时器停止状态
K_TCR0_TDDR .set 1001B<<0 ;定时器分频系数
K_TCR0 .set K_TCR0_SOFT|K_TCR0_FREE|K_TCR0_PSC|K_TCR0_TRB|K_TCR0_TSS|K_TCR0_TDDR
*初始化定时器0
*根据定时长度计算公式:T=T*(1+TDDR)*(1+PRD)
*给定TDDR=9,PRD=79
TIM1 .set 30h
PRD1 .set 31h
TCR1 .set 32h
OUT_FIFO1_PID .set 11h
OUT_FIFO2_PID .set 20h
OUT_FIFO3_PID .set 0a3h
OUT_FIFO4_PID .set 4h
OUT_FIFO5_PID .set 5h
OUT_FIFO6_PID .set 6h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -