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

📄 subfunction.inc

📁 dsp5416与tl16c550实现并口转串口通信程序
💻 INC
字号:
;==============================================================================
; 		
;		Initialization CPU register
;
;==============================================================================
INIT_CPU	.macro
		STM		#0h,CLKMD		;Close CPU clock first
		NOP
		NOP
		STM		#K_CLKMD,CLKMD
		NOP
		NOP
		STM		#K_SWWSR,SWWSR
		NOP
		NOP
		STM		#K_BSCR,BSCR
		NOP
		NOP
		STM 	#K_ST0,ST0
		NOP
		NOP
		STM 	#K_ST1,ST1 		;Initializaion Status register
		NOP
		NOP						
		STM 	#K_PMST,PMST		;Initializaion Processor mode status register
		NOP
		NOP	
		STM 	#0001h,SWCR					
;		STM 	#K_IMR,IMR		;Initializaion Interrupt mask register
		NOP
		NOP
		.endm
		
;==============================================================================
;
;		Initialization peripheral registers
;
;==============================================================================
INIT_PERIPHERAL	.macro
		STM 	#K_SWWSR,SWWSR
		NOP
		NOP
		STM 	#K_BSCR,BSCR
		NOP
		NOP
		STM 	#K_SWCR,SWCR		;Initializaion External Bus
		NOP
		NOP
		;STM 	#K_CLKMD,CLKMD	;Initializaion PLL
		NOP
		NOP
		.endm
*********************************
*改变中断向量表的位置
*中断向量表的位置并没有强制的位置,可以在内部寄存器,也可以在外边寄存器.
*但有一个要求:中断向量表必须放在80H字长存储器块的起始处,即中断向量表的
*首地址的低七位必须全为0.DSP的寄存器PMSY的高9位是中断矢量表的指针IPTR.
*其上电时默认是在FF80H处,这是为了运行固化在内部ROMde上电加载程序.
*由于FF80h是只读的,加载用户自定义的中断矢量表时会报错.这需要重新设置IPTR值.
*********************************
INIT_IPTR	.macro

			LDM		PMST,A
			AND		#7FH,A			;保留低7位,清掉高位
			OR		#K_IPTR_S,A
			STLM	A,PMST
			.endm
		
;==============================================================================
;
;		Initialization McBSP #1
;
;==============================================================================

;==============================================================================
;		1.XRST_=RRST_=0
;==============================================================================
INIT_MCBSP1	.macro
		STM		#SPCR11,SPSA1
		NOP
		NOP
		STM		#0x0000,SPSD1
		NOP
		NOP
	
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#0x0000,SPSD1
		NOP
		NOP
		
;==============================================================================
;		2.Program McBSP registers
;==============================================================================
		STM		#SPCR11,SPSA1
		NOP
		NOP
		STM		#K_SPCR11,SPSD1
		NOP
		NOP
	
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#K_SPCR21,SPSD1
		NOP
		NOP

		STM		#PCR1,SPSA1
		NOP
		NOP
		STM		#K_PCR1,SPSD1
		NOP
		NOP

		STM		#RCR11,SPSA1
		NOP
		NOP
		STM		#K_RCR11,SPSD1
		NOP
		NOP	
		
		STM		#RCR21,SPSA1
		NOP
		NOP
		STM		#K_RCR21,SPSD1
		NOP
		NOP		
		
		STM		#XCR11,SPSA1
		NOP
		NOP
		STM		#K_XCR11,SPSD1
		NOP
		NOP	
		
		STM		#XCR21,SPSA1
		NOP
		NOP
		STM		#K_XCR21,SPSD1
		NOP
		NOP	
	
		STM		#SRGR11,SPSA1
		NOP
		NOP
		STM		#K_SRGR11,SPSD1
		NOP
		NOP	
		
		STM		#SRGR21,SPSA1
		NOP
		NOP
		STM		#K_SRGR21,SPSD1
		NOP
		NOP	
		
		NOP
		NOP
		NOP
		NOP

;==============================================================================
;		3.GRST_=1
;==============================================================================
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#0x0040,SPSD1
		NOP
		NOP

;==============================================================================
;		4.Wait for two sample rate generator duration
;==============================================================================	
		NOP
		NOP
		NOP
		NOP
		
		NOP
		NOP
		NOP
		NOP

;==============================================================================
;		5.XRST_=RRST_=1
;==============================================================================	
		;STM		#SPCR11,SPSA1
		;NOP
		;NOP
		;STM		#0081h,SPSD1
		;NOP
		;NOP	
		
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#00080h,SPSD1
		NOP
		NOP
		
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#00C0h,SPSD1
		NOP
		NOP
				
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#00C1h,SPSD1
		NOP
		NOP	

;==============================================================================
;		6.Wait for two sample rate generator duration
;==============================================================================			
		NOP
		NOP
		NOP
		NOP
		
		NOP
		NOP
		NOP
		NOP
		.endm
		
;==============================================================================
;		Initialization THE TLV320AIC23B
;==============================================================================
INIT_AIC23B	.macro
		WRITE_AIC23B_CON_REG TLV_LLVC
		WRITE_AIC23B_CON_REG TLV_RLVC
		WRITE_AIC23B_CON_REG TLV_LHVC
		WRITE_AIC23B_CON_REG TLV_RHVC
		WRITE_AIC23B_CON_REG TLV_AAPC
		WRITE_AIC23B_CON_REG TLV_DAPC
		WRITE_AIC23B_CON_REG TLV_DAIF
		WRITE_AIC23B_CON_REG TLV_SARC
		WRITE_AIC23B_CON_REG TLV_DIAC
		WRITE_AIC23B_CON_REG TLV_PWDC
		.endm
		
;=============================================================================
;		write to tlv320aic23b controll register
;=============================================================================
WRITE_AIC23B_CON_REG	.macro CONTROL_VALUE
		STM		#CONTROL_VALUE,DXR11
		NOP
		NOP
		FLASH
		.endm

;==============================================================================
;		FLASH
;==============================================================================
FLASH	.macro
		STM 	#0x0000,AR7
		PORTW 	AR7,0x0000		;make the lights on
		DELAY		

		STM 	#0xFFFF,AR7
		PORTW 	AR7,0x0000		;make the lights off
		DELAY
		.endm
				
;==============================================================================
;
;		delay sub function
;
;==============================================================================
DELAY		.macro
			STM 	#100,AR2
DELAY2?: 	STM 	#1000,AR1
DELAY1?:	BANZ 	DELAY1?,*AR1-
			BANZ 	DELAY2?,*AR2-
			NOP
			NOP
			.endm
			
			
			
;==============================================================================
;
;		short delay sub function
;
;==============================================================================
SHORT_DELAY		.macro
			STM 	#1,AR2
DELAY2?: 	STM 	#10,AR1
DELAY1?:	BANZ 	DELAY1?,*AR1-
			BANZ 	DELAY2?,*AR2-
			NOP
			NOP
			.endm

⌨️ 快捷键说明

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