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

📄 init_54x.inc

📁 dsp5416与tl16c550实现并口转串口通信程序
💻 INC
字号:
*******************************************************
*******
*******包含ST0、ST1、PMST、SWWSR、寄存器的配置值*******
*******											*******
*******************************************************
******定时器控制寄存器TCR
*#####################################*
*| 15 -12 | 11 | 10 |9-6| 5 | 4 |3 -0|*
*|reserved|SOFT|FREE|PSC|TRB|TSS|TDDR|*
*#####################################*
K_TCR_RES	.set	0000b<<12
K_SOFT		.set	0b<<11
K_FREE		.set	0b<<10
K_PSC		.set	0000b<<6
K_TRB		.set	1b<<5
K_TSS		.set	0b<<4
K_TDDR		.set	1001b<<0
K_TCR		.set	K_TCR_RES|K_SOFT|K_FREE|K_PSC|K_TRB|K_TSS|K_TDDR
*******************************************************
*TCR:0000000000101001B(0029H)
*****************************
*******ST0寄存器的状态位如下:
*###########################*
* |15-13|12|11| 10| 9 |8-0| *
*###########################*
* | ARP |TC|C |OVA|OVB| DP| *
*###########################*
K_ARP		.set	000b<<13		;
K_TC		.set	1b<<12			;测试控制位
K_C			.set	1b<<11			;加法进位位
K_OVA		.set	1b<<10			;累加器A溢出标志
K_OVB		.set	1b<<9			;累加器B溢出标志
K_DP		.set	000000000b<<0	;数据页指针
K_ST0		.set	K_ARP|K_TC|K_C|K_OVA|K_OVB|K_DP
******ST0:0001111000000000B(1E00H)
*******************************************************
*******ST1寄存器的状态位如下:
*####################################################*
* | 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| *
*####################################################*
K_BRAF		.set	1b<<15			;块重复活动标志
K_CPL		.set	0b<<14			;编译器模式
K_XF		.set	1b<<13			;外部标志
K_HM		.set	0b<<12			;保持模式
K_INTM		.set	1b<<11			;中断模式INTM
K_ST1_RESR	.set	0b<<10			;保留位
K_OVM		.set	1b<<9			;溢出标志
K_SXM		.set	0b<<8			;符号扩展模式
K_C16		.set	0b<<7			;双16位/双精度算术模式
K_FRCT		.set	1b<<6			;小数乘模式
K_CMPT		.set	0b<<5			;兼容模式
K_ASM		.set	00000b<<0		;累加器移位模式
K_ST1_HIGH	.set	K_BRAF|K_CPL|K_XF|K_HM|K_INTM|K_ST1_RESR|K_OVM
K_ST1_LOW	.set	K_SXM|K_C16|K_FRCT|K_CMPT|K_ASM
K_ST1		.set	K_ST1_HIGH|K_ST1_LOW
******ST1:0010101101000000B(2B40H)
*******************************************************
*******PMST寄存器的状态位如下:
*#############################################*
* |15-7|  6  |  5 | 4  | 3  |   2  |  1  0  | *
*#############################################*
* |IPTR|MP/MC|OVLY|AVIS|DROM|CLKOFF|Reserved| *
*#############################################*
K_IPTR		.set	000000001b<<7	;中断矢量指针
K_MP_MC		.set	0b<<6			;微处理器/微计算机
K_OVLY		.set	1b<<5			;RAM重置方式
K_AVIS		.set	0b<<4			;地址可见模式
K_DROM		.set	0b<<3			;数据ROM模式
K_CLKOFF	.set	0b<<2			;时钟输出无效模式
K_PMST_RESR	.set	00b<<0			;保留
K_PMST_HIGH	.set	K_IPTR|K_MP_MC|K_OVLY|K_AVIS|K_DROM
K_PMST_LOW	.set	K_CLKOFF|K_PMST_RESR
K_PMST		.set	K_PMST_HIGH|K_PMST_LOW
******PMST:1111111111000000B(FFC0H)
*******************************************************
*******SWWSR寄存器的状态位如下:
*############################################*
* |   15   |14-12|11-9|8-6 |  5-3  |  2-0  | *
*############################################*
* |Reserved| I/O |Data|Data|Program|Program| *
*#############################################*
K_RES	    .set 0b<<15		;Extended program address control
K_IO		.set 111b<<12	;I/O space
K_DATAHI	.set 000b<<9	;Data space(8000-FFFFh)
K_DATALO	.set 000b<<6	;Data space(0000-7FFFh)
K_PROGHI	.set 000b<<3	;Program space(xx8000-xxFFFFh)	
K_PROGLO	.set 000b<<0	;Program space(xx0000-xx7FFFh)

K_SWWSR		.set K_RES|K_IO|K_DATAHI|K_DATALO|K_PROGHI|K_PROGLO

K_SWWSR_IO	.set	2000h			;将地址为0000h-FFFFh的I/O空间置为两个等待状态
*******************************************************
*      SWCR:Software Wait-State Control Register
*######################################################
* |  15-1  |  0  | *
*############################################*
* |Reserved| SWSM| *
*#############################################*
K_SWCR_RES	.set 000000000000000b<<1;Reserved
K_SWSM		.set 0b<<0				;Software Wait-State multiplier bit
K_SWCR		.set K_SWCR_RES|K_SWSM
**************************************************************
*******BSCR寄存器的状态位如下:
*#################################*
* |  15  |14 -13|  12   |  11-3  | 2 |1 | 0  | *
*#################################*
* |CONSEC|DIVFCT|IACKOFF|Reserved|HBH|BH|EXIO| *
*#################################*
K_CONSEC	.set	0b<<15 		;存储器大小设置为64K字
K_DIVFCT	.set	00b<<13			;在程序或数据读时不插入一个额外周期
K_IACKOFF	.set	0b<<12
K_BSCR_RESR	.set	000000000b<<3	;保留
K_HBH		.set	1b<<2
K_BH		.set	0b<<1			;总线保持器
K_EXIO		.set	0b<<0			;扩展总线接口无效
K_BSCR		.set	K_CONSEC|K_DIVFCT|K_IACKOFF|K_BSCR_RESR|K_HBH|K_BH|K_EXIO
******BSCR:0000000000000000B(0000H)
*******************************************************
*******CLKMD寄存器的状态位如下(时钟模式):
*#####################################################*
* | 15-12|  11 |   10-3  |   2    |   1   |     0   | *
*#####################################################*
* |PLLMUL|PLLDIV|PLLCOUNT|PLLON/OF|PLLNDIV|PLLSTATUS| *
*#####################################################*
K_PLLMUL	.set	1110b<<12 		;PLL倍频
K_PLLDIV	.set	0b<<11			;PLL分频
K_PLLCOUNT	.set	00101001b<<3	;PPL计数器,每输入16个时钟周期PLL计数器减一
K_PLLON_OF	.set	1b<<2			;PLL开关控制
K_PLLNDIV	.set	1b<<1			;PLL时钟发生器选择
K_PLLSTATUS .set	1b<<0			;PLL状态位,指示工作模式
K_CLKMD		.set	K_PLLMUL|K_PLLDIV|K_PLLCOUNT|K_PLLON_OF|K_PLLNDIV|K_PLLSTATUS
******CLKMD:0100000000000111B(4007H)
*******************************************************
******定时器控制寄存器TCR
*#####################################*
*| 15 -12 | 11 | 10 |9-6| 5 | 4 |3 -0|*
*|reserved|SOFT|FREE|PSC|TRB|TSS|TDDR|*
*#####################################*
K_TCR_RES	.set	0000b<<12
K_SOFT		.set	0b<<11
K_FREE		.set	0b<<10
K_PSC		.set	0000b<<6
K_TRB		.set	1b<<5
K_TSS		.set	0b<<4
K_TDDR		.set	1001b<<0
K_TCR		.set	K_TCR_RES|K_SOFT|K_FREE|K_PSC|K_TRB|K_TSS|K_TDDR
***********************************************************************
*******SPCR1寄存器的状态位如下(串口控制):
*######################################################################*
* | 15|14-13| 12-11|  10-8 |  7  |  6  |5-4 |    3   |  2  |  1 |  0 | *
*######################################################################*
* |DLB|RJUST|CLKSTP|RESERVED|DXENA|ABIS|RINTM|RSYNCERR|RFULL|RRDY|RRST| *
*######################################################################*
K_DLB		.set	0b<<15 			;数字链路回馈模式
K_RJUST		.set	01b<<13			;接收数据的符号扩展及调整模式
K_CLKSTP	.set	00b<<11			;在SPI中的时钟调整模式
K_RESERVED	.set	000b<<8			;保留
K_DXENA		.set	0b<<7			;DX引脚使能
K_ABIS		.set	0b<<6			;A-Bis模式,McBSP在PCM链中最多接收或发送1024bit
K_RINTM		.set	00b<<4			;接收中断模式
K_RSYNCERR	.set	0b<<3			;接收同步错误
K_RFULL		.set	0b<<2			;接收移位寄存器(RSR)满,出错状态
K_RRDY		.set	0b<<1			;接收准备好
K_RRST		.set	0b<<0			;发送准备好
K_SPCR1		.set	K_DLB|K_RJUST|K_CLKSTP|K_RESERVED|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
K_SPCR1_RS	.set	0010000000000000b
******SPCR1:0010000000000001B(2001H)
*******************************************************
*******SPCR2寄存器的状态位如下(串口控制):
*######################################################################*
* | 15-10  |  9 | 8  | 7  | 6  | 5-4 |    3   |  2   |  1 |  0 | *
*######################################################################*
* |RESERVED|FREE|SOFT|FRST|GRST|XINTM|XSYNCERR|XEMPTY|XRDY|XRST| *
*######################################################################*
K_RESERVED	.set	000000b<<10 		;保留
K_FREE		.set	0b<<9			;自由运行模式
K_SOFT		.set	0b<<8			;SOFT模式
K_FRST		.set	1b<<7			;桢同步发生器复位
K_GRST		.set	1b<<6			;采样率发生器复位
K_XINTM		.set	00b<<4			;发送中断模式
K_XSYNCERR	.set	0b<<3			;发送同步错误
K_XEMPTY	.set	1b<<2			;发送移位寄存器(XSR)空
K_XRDY		.set	1b<<1			;发送准备好
K_XRST		.set	1b<<0			;发送复位
K_SPCR2		.set	K_RESERVED|K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST
K_SPCR2_SE	.set	0000000000000110b
K_SPCR2_SE_ONE .set	0000000001000110b
K_SPCR2_SE_TWO .set	0000000000000111b
******SPCR2:0000000011000111B(00c7H)
******************************************************
*******RCR1寄存器的状态位如下(接收控制):
*######################################################################*
* | 15 | 14-8  |  7-5  |4-0 | *
*######################################################################*
* |RES1|RFRLEN1|RWDLEN1|RES2| *
*######################################################################*
K_R1_RES1	.set	0b<<15 		;保留
K_RFRLEN1	.set	0000000b<<8	;接收桢长1为1个字
K_RWDLEN1	.set	000b<<5		;接收字长1为8bit
K_R1_RES2	.set	00000b<<0	;保留
K_RCR1		.set	K_R1_RES1|K_RFRLEN1|K_RWDLEN1|K_R1_RES2
******RCR1:0000000000000000B(0000H)
******************************************************
*******RCR2寄存器的状态位如下(接收控制):
*######################################################################*
* |  15  | 14-8  |  7-5  |  4-3   |  2 |  1-0  | *
*######################################################################*
* |RPHASE|RFRLEN2|RWDLEN2|RCOMPAND|RFIG|RDATDLY| *
*######################################################################*
K_RPHASE	.set	0b<<15 		;接收为单相
K_RFRLEN2	.set	0000000b<<8	;接收桢长2为1个字
K_RWDLEN2	.set	000b<<5		;接收字长2为8bit
K_RCOMPAND	.set	00b<<3		;信号无压扩,先接收MSB位
K_RFIG	 	.set	0b<<2		;第一次重启发送后接收桢同步脉冲
K_RDATDLY	.set	01b<<0		;1彼特延迟
K_RCR2		.set	K_RPHASE|K_RFRLEN2|K_RWDLEN2|K_RCOMPAND|K_RFIG|K_RDATDLY
******RCR2:0000000000000001B(0001H)
******************************************************
*******XCR1寄存器的状态位如下(发送控制):
*######################################################################*
* | 15 | 14-8  |  7-5  |4-0 | *
*######################################################################*
* |RES1|XFRLEN1|XWDLEN1|RES2| *
*######################################################################*
K_X1_RES1	.set	0b<<15 		;保留
K_XFRLEN1	.set	0000000b<<8	;发送桢长1为1个字
K_XWDLEN1	.set	000b<<5		;发送字长1为8bit
K_X1_RES2	.set	00000b<<0	;保留
K_XCR1		.set	K_X1_RES1|K_XFRLEN1|K_XWDLEN1|K_X1_RES2
******XCR1:0000000000000000B(0000H)
******************************************************
******XCR2寄存器的状态位如下(发送控制):
*######################################################################*
* |  15  | 14-8  |  7-5  |  4-3   |  2 |  1-0  | *
*######################################################################*
* |XPHASE|XFRLEN2|XWDLEN2|XCOMPAND|XFIG|XDATDLY| *
*######################################################################*
K_XPHASE	.set	0b<<15 		;发送为单相
K_XFRLEN2	.set	0000000b<<8	;发送桢长2为1个字
K_XWDLEN2	.set	000b<<5		;发送字长2为8bit
K_XCOMPAND	.set	00b<<3		;信号无压扩,先发送MSB位
K_XFIG	 	.set	0b<<2		;第一次重启发送后发送桢同步脉冲
K_XDATDLY	.set	01b<<0		;1彼特延迟
K_XCR2		.set	K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY
******XCR2:0000000000000001B(0001H)
******************************************************
******PCR寄存器的状态位如下(发送控制):
*######################################################################################################*
* | 15-14  | 13  | 12  | 11 | 10 |  9  |  8  |   7    |    6    |   5   |   4   |  3 |  2 |  1  |  0  |*
*######################################################################################################*
* |RESERVED|XIOEN|RIOEN|FSXM|FSRM|CLKXM|CLKRM|RESERVED|CLKS_STAT|DX_STAT|DR_STAT|FSXP|FSRP|CLKXP|CLKRP|*
*######################################################################################################*
K_PCR_RES1	.set	00b<<14
K_XIOEN     .set	0b<<13		
K_RIOEN     .set	0b<<12          ;DX,FSX,CLKX设置为串口引脚 
K_FSXM      .set	1b<<11          ;桢同步由SRGR2的FSGMF位确定
K_FSRM      .set	1b<<10
K_CLKXM     .set	1b<<9
K_CLKRM     .set	1b<<8
K_PCR_RES2  .set	0b<<7
K_CLKS_STAT .set	0b<<6
K_DX_STAT   .set	0b<<5
K_DR_STAT   .set	0b<<4
K_FSXP      .set	0b<<3
K_FSRP      .set	0b<<2
K_CLKXP     .set	0b<<1
K_CLKRP     .set	0b<<0
K_XCR2		.set	K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY
******XCR2:0000000000000001B(0001H)
******************************************************
*******IMR寄存器的状态位如下(接收控制):
*######################################################################*
* | 15 | 14-8  |  7-5  |4-0 | *
*######################################################################*
* |RES1|RFRLEN1|RWDLEN1|RES2| *
*######################################################################*
K_IMR_RES   .set 00b<<14	;Reserved
K_DMAC5		.set 0b<<13		;DMA channel 5 interrupt
K_DMAC4		.set 0b<<12 	;DMA channel 4 interrupt 
K_BXINT1	.set 0b<<11		;McBSP #1 transmit interrupt(default)
K_BRINT1	.set 0b<<10		;McBSP #1 receive interrupt(default)
K_HPINT		.set 0b<<9		;HPI interrupt
K_INT3		.set 0b<<8		;External user interrupt #3
K_BXINT2	.set 0b<<7		;McBSP #2 transmit interrupt(default)
K_BRINT2	.set 0b<<6		;McBSP #2 receive interrupt(default)
K_BXINT0	.set 0b<<5		;McBSP #0 transmit interrupt(default)
K_BRINT0	.set 0b<<4		;McBSP #0 receive interrupt(default)
K_TINT0		.set 0b<<3		;Timer0 interrupt
K_INT2		.set 0b<<2		;External user interrupt #2
K_INT1		.set 1b<<1		;External user interrupt #1
K_INT0		.set 0b<<0		;External user interrupt #0

K_IMR_HIGH	.set K_IMR_RES|K_DMAC5|K_DMAC4|K_BXINT1|K_BRINT1
K_IMR_MID	.set K_HPINT |K_INT3|K_BXINT2|K_BRINT2|K_BXINT0|K_BRINT0
K_IMR_LOW	.set K_BRINT0|K_TINT0|K_INT2|K_INT1|K_INT0
K_IMR		.set K_IMR_HIGH|K_IMR_MID|K_IMR_LOW
***************************************************************************












⌨️ 快捷键说明

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