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

📄 c54_init.asm

📁 该代码采用c5400dsp的汇编语言和c语言实现正弦信号
💻 ASM
字号:
		    .copy 	5410.mmreg
			.def  	_c54_init,_hpidsp_host
			.global _ad_samp_freq
	        .bss  	_ad_samp_freq,1
            .bss  	IO_OUDATA,1
			.text
_c54_init:   
	        SSBX	INTM
	        ST      #0,*(IO_OUDATA)
	        PORTW   IO_OUDATA,04h			;Write IO(address = 0x4h),复位 AIC,因为AIC的复位脚映射为IO的0X4H地址
;CPU                                                                                                                               
	        STM		0,ST0					;ARP=0、DP=0                                                                       
	        				                                                                                  
	        STM		0100001101011111B,ST1	;CPL=0 DP直接寻址、中断屏蔽、溢出保护、                                            
	        								;符号扩展、FRCT有效、ARP无效、ASM=-1                                                
	        STM		0010000000100100B,PMST	;中断定位2000H、程序/数据空间有效,DROM=1 SARAM2有效
            STM 	0x7FFF,SWWSR	        ;0 WS for memory, 2 WS for I/O  */
            STM 	0x3,@0x2B  	        
;CLK                                                                                                                               
                                                                                                                                   
	        STM		0,BSCR					;CLKOUT = CPU CLOCK
	        NOP
	        NOP                                                                
	        STM		0,CLKMD					;Reset to DIV Mod                                                                  
	        NOP
	        NOP
	        STM		1001011111111111B,CLKMD	;PLL Multiply 10,高4位加1即为倍频系数 
	        NOP
	        NOP  
	        NOP
	        NOP                                                               
;TOUT  = 100M/16,设置定时器0的定时周期                                                                                                                          
	        STM		0000010000010001B,TCR	;TDDR=3
	        NOP
	        NOP
	        STM		0XFFFE,PRD				;PRD=3                                                                             
	        NOP
	        NOP
	        STM		0000010000000011B,TCR	;TDDR=3  
	        NOP
	        NOP
	        ST      #1,*(IO_OUDATA)
	        PORTW   IO_OUDATA,04h			;Enable The AIC
	        CALL	WAITT
;设置McBSP0工作方式         
			STM		0,SPSA0                                                                                                    
	        STM		0X40A0,SPCR0			;SPCR10		;reset                                                             
	        STM		1,SPSA0                                                                                                    
	        STM		0X0220,SPCR0			;SPCR20                                                                            
	        STM		2,SPSA0                                                                                                    
	        STM		0X0040,SPCR0			;RCR10		;receive frame and word length                                     
	        STM		3,SPSA0                                                                                                    
	        STM		0X0040,SPCR0			;RCR20		;receive frame and word length                                     
	        STM		4,SPSA0                                                                                                    
	        STM		0X0040,SPCR0			;xCR10		;transmit frame and word length                                    
	        STM		5,SPSA0                                                                                                    
	        STM		0X0040,SPCR0			;xCR20		;transmit frame and word length                                    
	        STM		0x000e,SPSA0                                                                                               
	        STM		0CH,SPCR0				;PCR0		;Polarity                                          
	       	STM		0,DXR10					;发送清空
			STM		0,23H
	        NOP                                                                                                                
	        NOP                                                                                                                
	        STM		1,SPSA0                                                                                                    
	        STM		0X0221,SPCR0			;SPCR20                                                                            
	        STM		0,SPSA0                                                                                                    
	        STM		0X40A1,SPCR0			;SPCR10		;run		                                                   
	        NOP                                                                                                        
			NOP
;设置AIC的工作方式
			CALL	WAITT
;reg 2 AIC分频器,抽样频率=外部输入时钟/分频比
			CALL	DX0EMPT
			STM		0,DXR10					;发送清空
			CALL	DX0EMPT
			STM		1,DXR10					;第二串口通信请求
			CALL	DX0EMPT
			LD      *(_ad_samp_freq),A
			STLM    A,DXR10
			CALL	DX0EMPT
			STM		0,DXR10
;reg 4	输入放大	
			CALL	DX0EMPT
			STM		0,DXR10					;发送清空
			CALL	DX0EMPT
			STM		1,DXR10					;第二串口通信请求
			CALL	DX0EMPT
			STM		0000100000001100B,DXR10	
			CALL	DX0EMPT
			STM	    0,DXR10
			CALL	WAITT
;设置中断屏蔽寄存器IMR,允许BSP0接收中断
			STM		0X010,IMR				;BSP0中断允许,产生的正弦波的抽样频率由AIC的抽样频率决定
			NOP
			RSBX	INTM
			RET
;延迟一段时间
WAIT:		STM		#0X0FFF,AR0
WAIT0:		STM		#0X0FF,AR1
WAIT1:		BANZ	WAIT1,*AR1-
			BANZ	WAIT0,*AR0-
			RET
			
WAITT:		STM		#0X00FFF,AR0
WAITT0:		STM		#0X003FF,AR1
WAITT1:		BANZ	WAITT1,*AR1-
			BANZ	WAITT0,*AR0-
			RET		
;MCBSP0 发送空检测		
DX0EMPT:	STM		1,SPSA0                                                                                                    
	   	 	LDM		SPCR0,A					;SPCR20
	    	NOP
	    	NOP
	    	AND		#0004h,A
	    	NOP
	    	NOP
	    	BC		DX0EMPT,ANEQ
	    	NOP
	    	NOP
	    	CALL	WAITT
	    	NOP
	    	RET
;触发一个HPI中断,告诉主机有数据将要发送给主机
_hpidsp_host
			STM	0x0a,HPIC				
			RET
			.end

⌨️ 快捷键说明

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