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

📄 subfunction.inc

📁 这是在C5000系列DSP上实现UART(异步串口)TL16c550芯片的汇编语言实现代码
💻 INC
字号:
;==============================================================================
; 		
;		Initialization CPU register
;
;==============================================================================
INIT_CPU	.macro
		STM 	#INIT_ST0,ST0
		NOP
		NOP
		STM 	#INIT_ST1,ST1 		;Initializaion Status register
		NOP
		NOP						
		;STM 	#INIT_PMST,PMST		;Initializaion Processor mode status register
		NOP
		NOP						
		STM 	#INIT_IMR,IMR		;Initializaion Interrupt mask register
		NOP
		NOP
		.endm
		
;==============================================================================
;
;		Initialization peripheral registers
;
;==============================================================================
INIT_PERIPHERAL	.macro
		STM 	#INIT_SWWSR,SWWSR
		NOP
		NOP
		STM 	#INIT_BSCR,BSCR
		NOP
		NOP
		STM 	#INIT_SWCR,SWCR		;Initializaion External Bus
		NOP
		NOP
		;STM 	#INIT_CLKMD,CLKMD	;Initializaion PLL
		NOP
		NOP
		.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		#INIT_SPCR11,SPSD1
		NOP
		NOP
	
		STM		#SPCR21,SPSA1
		NOP
		NOP
		STM		#INIT_SPCR21,SPSD1
		NOP
		NOP

		STM		#PCR1,SPSA1
		NOP
		NOP
		STM		#INIT_PCR1,SPSD1
		NOP
		NOP

		STM		#RCR11,SPSA1
		NOP
		NOP
		STM		#INIT_RCR11,SPSD1
		NOP
		NOP	
		
		STM		#RCR21,SPSA1
		NOP
		NOP
		STM		#INIT_RCR21,SPSD1
		NOP
		NOP		
		
		STM		#XCR11,SPSA1
		NOP
		NOP
		STM		#INIT_XCR11,SPSD1
		NOP
		NOP	
		
		STM		#XCR21,SPSA1
		NOP
		NOP
		STM		#INIT_XCR21,SPSD1
		NOP
		NOP	
	
		STM		#SRGR11,SPSA1
		NOP
		NOP
		STM		#INIT_SRGR11,SPSD1
		NOP
		NOP	
		
		STM		#SRGR21,SPSA1
		NOP
		NOP
		STM		#INIT_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 + -