📄 initdsp.inc
字号:
*********************************************************
*FILENAME:INITDSP.INC *
*This include file contains the initial values of *
*C542 configuration registers. *
*BY:Wuchun DATE:2002.8.7 *
*Modified:彭洪 DATE:2005.2.4 *
*********************************************************
;Register Organization (06h)
;ST0:Status register 0
;-------------------------
;|15-13|12|11| 10| 9 |8-0|
;-------------------------
;| ARP |TC| C|OVA|OVB|DP |
;--------------------------------------------------------------------------------------
;15-13 ARP 辅助寄存器指针。为了与'C5x、'C2x和'C2xx兼容而设置,一般不用
;12 TC 测试/控制标志。一些测试、比较等指令设置此标志。TC到值可以作为其它一些条
; 件执行指令到条件。
;11 C 如果ALU加运算产生了进位或减运算没有产生借位,则置1,否则置0。
;10 OVA 如果ALU作加法运算或MAC中的加法器运算结果产生了溢出,且结果存放到累加器A,
; 则OVA置1
;9 OVB 如果ALU作加法运算或MAC中的加法器运算结果产生了溢出,且结果存放到累加器B,
; 则OVA置1
;8-0 DP 数据页指针
;--------------------------------------------------------------------------------------
K_ARP .set 000b<<13;左移<<<是逻辑左移
K_TC .set 1b<<12
K_C .set 0b<<11
K_OVA .set 0b<<10
K_OVB .set 0b<<9
K_DP .set 000000000b<<0
K_ST0 .set K_ARP|K_TC|K_C|K_OVA|K_OVB|K_DP
;初始化结果K_ST0(1000h)
;|15-13| 12| 11| 10| 9 | 8-0 |
;| ARP | TC| C |OVA|OVB| DP |
;| 000 | 1 | 0 | 0 | 0 |000000000|
;Register Organization (07h)
;ST1:Status register 1
;--------------------------------------------------
;| 15 | 14|13|12| 11 |10| 9 | 8 | 7 | 6 | 5 |4-0|
;--------------------------------------------------
;|BRAF|CPL|XF|HM|INTM|0 |OVM|SXM|C16|FRCT|CMPT|ASM|
;-------------------------------------------------------------------------------------
;15 BRAF Block-repeat active flag,块重复有效标志。BRAF=1表示程序正处于重复执行
; 的块中。当块重复计数器递减到0时,BRAF清0。
;14 CPL 编译器模式位,CPL=0使用堆栈指针SP寻址,CPL=1使用页指针DP寻址
;13 XF XF状态。直接设置XF引脚的状态。
;12 HM Hold mode,保持模式,决定处理器进入保持方式后到操作。HM=0 CPU继续执行
; HM=1 CPU停止执行
;11 INTM 全局中断屏蔽位。INTM=0 打开中断INTM=1 所有可屏蔽中断被屏蔽
;9 OVM 溢出模式。OVM决定在运算产生溢出时,存放到目的累加器的值。OVM=0 允许溢出
; OVM=1 根据溢出方向,向目的累加器写入最大正数或最小负数。
;8 SXM 符号扩展模式。SXM=0 不作符号扩展SXM=1 运算时作符号扩展,表示有符号数运算。
;7 C16 C16=0 ALU作双精度算术运算C16=1 ALU作双16bit算术运算
;6 FRCT 小数乘法模式。
;5 CMPT 与'C5x兼容模式,一般为0。
;4-0 ASM 累加器移位模式。在存储累加器时指定一个移位值,-16~15。
;--------------------------------------------------------------------------------------
K_BRAF .set 0b<<15
K_CPL .set 1b<<14
K_XF .set 1b<<13
K_HM .set 0b<<12
K_INTM .set 1b<<11 ;复位以后立即屏蔽中断
K_ST1_RES .set 0b<<10
K_OVM .set 0b<<9
K_SXM .set 1b<<8
K_C16 .set 0b<<7
K_FRCT .set 0b<<6
K_CMPT .set 0b<<5
K_ASM .set 00000b<<0
K_ST1 .set K_BRAF|K_CPL|K_XF|K_HM|K_INTM|K_ST1_RES|K_OVM|K_SXM|K_C16|K_FRCT|K_CMPT|K_ASM
;初始化结果K_ST1(6900h)
;|15 | 14| 13|12| 11 |10| 9 | 8 | 7 | 6 | 5 | 4-0 |
;|BRAF|CPL| XF|HM|INTM| 0|OVM|SXM|C16|FRCT|CMPT| ASM |
;| 0 | 1 | 1 | 0| 1 | 0| 0 | 1 | 0 | 0 | 0 |00000|
;Register Organization (1dh)
;PMST:Processor mode status register
;--------------------------------------------
;|15-7| 6 | 5 | 4 | 3 | 2 | 1 | 0 |
;--------------------------------------------
;|IPTR|MP/MC#|OVLY|AVIS|DROM|CLKOFF|SMUL|SST|
;--------------------------------------------------------------------------------------
;15-7 IPTR 中断向量表指针,不受RESET指令的影响。
;6 MP/MC# 微处理器/微计算机模式。MP/#MC=0 微计算机模式,片上ROM有效;(从片内ff80
; 执行)MP/#MC=1 微处理器模式,片上ROM无效。(从片外ff80执行)
;5 OVLY 对于5402,OVLY决定0000H到3FFFH程序存储空间的片内片外分配
; OVLY=1, 0000H~007FH保留,程序无法占用。0080H~3FFFH为片内RAM
; OVLY=0, 007FH~3FFFFH均为片外RAM
;4 AVIS Address Visibility Mode。决定存取片内存储器时地址线是否发生变化。
; AVIS=1 发生变化,AVIS=0 不发生变化。
;3 DROM 数据ROM。DROM=0 片上ROM都被映射到程序空间;DROM=1 片上部分ROM被映射到数据空间。
;2 CLKOFF CLKOFF=1时,CLKOUT引脚无时钟信号输出。
;1 SMUL 乘法饱和。在MAC和MAS指令中,作加减运算前饱和。
;0 SST 存储时饱和。
;--------------------------------------------------------------------------------------
K_IPTR .set 000000001b<<7;80h 其中1b是指80h中的高9位
K_MP_MC .set 0b<<6
K_OVLY .set 1b<<5
K_AVIS .set 0b<<4
K_DROM .set 0b<<3
K_CLKOFF .set 1b<<2
K_SMUL .set 0b<<1
K_SST .set 0b<<0
K_PMST .set K_IPTR|K_MP_MC|K_OVLY|K_AVIS|K_DROM|K_CLKOFF|K_SMUL|K_SST
;初始化结果PMST(00a4h)
;| 15-7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
;| IPTR |MP/MC#|OVLY|AVIS|DROM|CLKOFF|SMUL|SST|
;|000000001| 0 | 1 | 0 | 0 | 1 | 0 | 0 |
;Register Organization (28h)
;SWWSR:Software wait-state register
;-----------------------------------------
;| 15|14-12|11-9 | 8-6 | 5-3 | 2-0 |
;-----------------------------------------
;|XPA| I/O |EDATA|IDATA|EPROGRAM|IPROGRAM|
;-----------------------------------------
;15 XPA 扩展程度地址控制,只读
;14-12 I/O 其值为I/O空间(0000h-FFFFh)的等待周期
;11-9 edata 其值为数据空间(8000h-FFFFh)的等待周期
;8-6 idata 其值为数据空间(0000h-7FFFh)的等待周期
;5-3 eprogram 其值为程序空间(8000h-FFFFh)的等待周期,XPA=0为程序空间
; (40000h-7FFFFh)的等待周期,XPA=1
;2-0 iprogram 其值为程序空间(0000h-7FFFh)的等待周期,XPA=0为程序空间
; (00000h-3FFFFh)的等待周期,XPA=1
;--------------------------------------------------------------------------------------
K_XPA .set 0b<<15
K_I_O .set 111b<<12
K_EDATA .set 111b<<9
K_IDATA .set 000b<<6
K_EPROGRAM .set 111b<<3
K_IPROGRAM .set 000b<<0
K_SWWSR .set K_XPA|K_I_O|K_EDATA|K_IDATA|K_EPROGRAM|K_IPROGRAM
;初始化结果SWWSR(7E38h)
;| 15|14-12|11-9 | 8-6 | 5-3 | 2-0 |
;|XPA| I/O |EDATA|IDATA|EPROGRAM|IPROGRAM|
;| 0 | 111 | 111 | 000 | 111 | 000 |
;Register Organization (29h)
;BSCR:Bank-switching control register组间切换控制寄存器
;-----------------------------------
;| 15-12| 11 | 10-3 | 2 | 1| 0 |
;-----------------------------------
;|BNKCMP|PS-DS|Reserved|HBH|BH|EXIO|
;-----------------------------------
;15-12 BNKCMP 分组大小,这4位分别与地址线A15~A12,决定了分组大小,当两次连续的
; 片外访问在不同组是,会自动插入一个等待
; BNKCMP 屏蔽的地址 分组大小
; 0000 无 64K
; 1000 A15 32K
; 1100 A15~A14 16K
; 1110 A15~A13 8K
; 1111 A15~A12 4K
;11 PS-DS 两次连续的片外读访问分别在程序空间和数据空间,1为加入一个周期的等待
; 0表示不等待
;2 HBH 0为主机总线不保持,1为主机总线保持在先前的电平
;1 BH 0为总线不保持,1为总线保持在先前电平
;0 EXI0 0为接通外总线,1为关闭外总线,使地址数据先为高阻,片选、选通R/W、
;--------------------------------------------------------------------------------------
K_BNKCMP .set 0000b<<12
K_PS_DS .set 0b<<11
K_BSSR_RES .set 00000000b<<3
K_HBH .set 0b<<2
K_BH .set 0b<<1
K_EXIO .set 0b<<0
K_BSCR .set K_BNKCMP|K_PS_DS|K_BSSR_RES|K_HBH|K_EXIO
;初始化结果SWWSR(0800h)
;| 15-12| 11 | 10-3 | 2 | 1| 0 |
;|BNKCMP|PS-DS|Reserved|HBH|BH|EXIO|
;| 0000 | 1 |00000000| 0 | 0| 0 |
;Register Organization (0h)
;IMR:Interrupt mask register
;--------------------------------------------------------------------------------------------
;|15-14| 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
;--------------------------------------------------------------------------------------------
;|resvd|DMAC5|DMAC4|BXINT1|BRINT1|HPIINT|INT3|TINT1|DMAC0|BXINT0|BRINT0|TINT0|INT2|INT1|INT0|
;--------------------------------------------------------------------------------------------
;先将IMR的某位置置1,则相应中断开放。这个寄存器只是对可屏蔽中断有效
;中断响应过程
;对于软件中断和硬件可屏蔽中断,CPU立即响应。对于硬件可屏蔽中断必须满足以下条件,
;CPU才能够响应中断
;(1)出现多个中断时,此中断的优先级最高
;(2)ST1中的INTM位为1,开放此中断
;(3)IMR中的中断响应响应相应位为1,开放此中断
;--------------------------------------------------------------------------------------
K_IMR_RES .set 00b<<14
K_DMAC5_OFF .set 0b<<13
K_DMAC5_ON .set 1b<<13
K_DMAC4_OFF .set 0b<<12
K_DMAC4_ON .set 1b<<12
K_BXINT1_OFF .set 0b<<11
K_BXINT1_ON .set 1b<<11
K_BRINT1_OFF .set 0b<<10
K_BRINT1_ON .set 1b<<10
K_HPIINT_OFF .set 0b<<9
K_HPIINT_ON .set 1b<<9
K_INT3_OFF .set 0b<<8
K_INT3_ON .set 1b<<8
K_TINT1_OFF .set 0b<<7
K_TINT1_ON .set 1b<<7
K_DMAC0_OFF .set 0b<<6
K_DMAC0_ON .set 1b<<6
K_BXINT0_OFF .set 0b<<5
K_BXINT0_ON .set 1b<<5
K_BRINT0_OFF .set 0b<<4
K_BRINT0_ON .set 1b<<4
K_TINT0_OFF .set 0b<<3
K_TINT0_ON .set 1b<<3
K_INT2_OFF .set 0b<<2
K_INT2_ON .set 1b<<2
K_INT1_OFF .set 0b<<1
K_INT1_ON .set 1b<<1
K_INT0_OFF .set 0b<<0
K_INT0_ON .set 1b<<0
;第一个为关闭AD时的设置|00|0|0|0|0|0|0|0|0|0|0|0|1|1|1|
K_IMR_AD_OFF .set K_IMR_RES|K_DMAC5_OFF|K_DMAC4_OFF|K_BXINT1_OFF|K_BRINT1_OFF|K_HPIINT_OFF|K_INT3_OFF|K_TINT1_OFF|K_DMAC0_OFF|K_BXINT0_OFF|K_TINT0_OFF|K_INT2_ON|K_INT1_ON|K_INT0_ON
;第二个为打开AD时的设置|00|0|0|0|0|0|0|1|0|0|0|1|1|1|1|
K_IMR_AD_ON .set K_IMR_RES|K_DMAC5_OFF|K_DMAC4_OFF|K_BXINT1_OFF|K_BRINT1_OFF|K_HPIINT_OFF|K_INT3_ON|K_TINT1_OFF|K_DMAC0_OFF|K_BXINT0_OFF|K_TINT0_ON|K_INT2_ON|K_INT1_ON|K_INT0_ON
;Register Organization (58h)
;CLKMD Clock mode
;-----------------------------------------------------
;| 15-12| 11 | 10-3 | 2 | 1 | 0 |
;-----------------------------------------------------
;|PLLMUL|PLLDIV|PLLCOUNT|PLLON/OFF|PLL NDIV|PLLSTATUS|
;--------------------------------------------------------------------------------------
;注意CLKMD1、2、3的引角设置各种器件不同
;15-12 PLLMUL PLL乘数
;11 PLLDIV PLL除数
;10-3 PLLCOUNT PLL计数器,作为PLL从开始到琐定处理器时钟信号的延时记数时间,保证
; 转换的可靠性频率
;2 PLLON/OFF PLL通断位
;1 PLL NDIV 时钟发生器选择位
;0 PLLSTATUS 只读,用来指示时钟发生器的工作方式,0为分频PLL方式,1为倍频PLL方式
;DSP实际工作的频率=输入频率X系数
; PLL NDIV PLLDIV PLL PLLMUL 系数
; 0 x 0-14 0.5
; 1 x 15 0.25
; 1 0 0-14 PLLMUL+1
; 1 0 15 1
; 1 1 0或偶数 (PLLMUL+1)/2
; 1 1 奇数 PLLNUL/4
;--------------------------------------------------------------------------------------
K_PLLMULX1 .set 0000b<<12 ;跑10MHz
K_PLLMULX10 .set 1001b<<12 ;跑80MHz
K_PLLDIV .set 0b<<11 ;不分频
K_PLLCOUNT .set 11011010b<<3;PLLCOUNT>琐定时间/(16*Tclkin),100MHz时为35us,最快为8us
K_PLLON_OFF .set 1b<<2;当PLLON/OFF=0并且PLL NDIV=0时PLL断开,这两位其它的组合PLL都运行
K_PLLNDIV .set 1b<<1
K_PLLSTATUS .set 0b<<0
;注意!!要改变PLL的倍频,必须先把时钟从PLL模式切换到DIV模式,然后再切换
;到新的倍频PLL模式。
;对外部晶振为10Mhz的542的频率设置(00e6h)
K_CLKMD_10M .set K_PLLMULX1|K_PLLDIV|K_PLLCOUNT|K_PLLON_OFF|K_PLLNDIV|K_PLLSTATUS
;对外部晶振为40Mhz的542的频率设置(30e6h)
K_CLKMD_80M .set K_PLLMULX10|K_PLLDIV|K_PLLCOUNT|K_PLLON_OFF|K_PLLNDIV|K_PLLSTATUS
;Register Organization (24h)
;TCR 定时控制寄存器
;----------------------------------
;|15-12| 11 | 10 |9-6| 5 | 4 | 3-0|
;----------------------------------
;|resvd|SOFT|FREE|PSC|TRB|TSS|TDDR|
;----------------------------------
;11 SOFT 软件调试控制位 SOFT和FREE配合使用
;10 FREE 软件调试控制位
; SOFT FREE 定时器操作
; 0 0 定时器立即停止工作
; 1 0 计数器减为0时停止工作
; x 1 定时器继续运行(PRD重新装入TIM)
;9-6 PSC 预标定值 定时器时钟由CLKOUT提供,每来一个时钟
; 预标定计数器PSC减1,当PSC减至0时,下一个脉冲
; 到来PSC产生借位,借位信号控制计数器TIM减1并且
; 将TDDR的内容加载到PSC中。
;5 TRB 当TRB=1时,预标定分频系数TDDR和定时器周期寄存器PRD
; 的数据分别加载至定时器预标定计数器PSC和定时器TIM中。
; 通常情况下TRB=0
;4 TSS TSS=0 定时器启动开始工作,TSS=1定时器停止工作
;3-0 TDDR 定时器分频系数
K_TCR_RES .set 0000b<<12
K_TCR_SOFT .set 0b<<11
K_TCR_FREE .set 0b<<10
K_TCR_PSC .set 0000b<<6
K_TCR_TRB .set 0b<<5
K_TCR_TSS .set 1b<<4
K_TCR_TDDR .set 0000b<<0
K_TCR .set K_TCR_RES|K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR
;初始化结果TCR(0020h)
;|15-12| 11 | 10 | 9-6| 5 | 4 | 3-0|
;|resvd|SOFT|FREE| PSC|TRB|TSS|TDDR|
;| 0000| 0 | 0 |0000| 1 | 0 |0000|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -