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

📄 c54_init.asm

📁 该代码采用c5400dsp的汇编语言和c语言实现双音多频信号的产生于检测
💻 ASM
字号:
		    .copy 5410.mmreg
		   	.def  _c54_init,_intdelay,_leddelay,_hpidsp_host,_clearint0
			.global _ad0fr,_ad1fr,_leddelaytime,_intdelaytime
			.global _imrvar,_clkmdvar,_prdvar,_tcrvar
			.bss  _ad0fr,1
    	    .bss  _ad1fr,1
    	    .bss  _leddelaytime,1
    	    .bss  _intdelaytime,1
			.bss  _imrvar,1
			.bss  _clkmdvar,1
			.bss  _prdvar,1
			.bss  _tcrvar,1
	        .bss  IO_Outdata,1
			.text
_c54_init:   
	        SSBX	INTM
	        RSBX	XF					;RESET ADC

	        portr    0400h,IO_Outdata
	        
;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
	        ;ld  *(_clkmdvar),A
	        ;STLM A,CLKMD
	        STM	0,CLKMD			;Reset to DIV Mod                                                                  
	        NOP
	        NOP
	        STM	1001011111111111B,CLKMD
	        NOP
	        NOP  
	        NOP
	        NOP                                                               
			
;TOUT  = 100M/16                                                                                                                          
	        STM	0000010000010001B,TCR	;TDDR=3
	        NOP
	        NOP
	        LD  *(_prdvar),A
	        STLM A,PRD					;PRD=3                                                                             
	        NOP
	        NOP
	        LD  *(_tcrvar),A
	        STLM A,TCR	;TDDR=3  
	        NOP
	        NOP
;	        
	        SSBX	XF					;ENABLE ADC                                                                                                                   
	        portw   IO_Outdata,0400h
	        CALL	WAIT
;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
;
;McBSP1         
			STM	0,SPSA1                                                                                                    
	        STM	0X40A0,SPCR1		;SPCR11		;reset                                                             
	        STM	1,SPSA1                                                                                                    
	        STM	0X0220,SPCR1		;SPCR21                                                                            
	        STM	2,SPSA1                                                                                                    
	        STM	0X0040,SPCR1		;RCR11		;receive frame and word length                                     
	        STM	3,SPSA1                                                                                                    
	        STM	0X0040,SPCR1		;RCR21		;receive frame and word length                                     
	        STM	4,SPSA1                                                                                                    
	        STM	0X0040,SPCR1		;xCR11		;transmit frame and word length                                    
	        STM	5,SPSA1                                                                                                    
	        STM	0X0040,SPCR1		;xCR21		;transmit frame and word length                                    
	        STM	0x000e,SPSA1                                                                                               
	        STM	0CH,SPCR1			;PCR1		;Polarity                                          
	        STM	0,DXR11				;发送清空
			STM	0,43H
			NOP                                                                                                                
	        NOP                                                                                                                
	        STM	1,SPSA1                                                                                                    
	        STM	0X0221,SPCR1		;SPCR20                                                                            
	        STM	0,SPSA1                                                                                                    
	        STM	0X40A1,SPCR1		;SPCR10		;run		                                                   
	        NOP                                                                                                        
			NOP
;
;AD变换器0
		CALL	WAIT
		CALL	WAIT
		CALL	WAIT
		CALL	WAIT
		
		
		
;reg 2 AD分频器
		CALL	DX0EMPT
		STM		0,DXR10		;发送清空
		CALL	DX0EMPT
		STM		1,DXR10		;第二串口通信请求
		CALL	DX0EMPT
		ld      *(_ad0fr),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
;AD变换器1缺省值
		CALL	WAIT
;reg2 AD分频器
		CALL	DX1EMPT
		STM	0,DXR11		;发送清空
		CALL	DX1EMPT
		STM	1,DXR11		;第二串口通信请求
		CALL	DX1EMPT
		ld      *(_ad1fr),A
		stlm     A,DXR11
		CALL	DX1EMPT
		STM	0,DXR11
;reg4 输入放大		
		CALL	DX1EMPT
		STM	0,DXR11		;发送清空
		CALL	DX1EMPT
		STM	1,DXR11		;第二串口通信请求
		CALL	DX1EMPT
		STM	0000100000001100B,DXR11		;
		CALL	DX1EMPT
		STM	0,DXR11
;interupt enable
		CALL    WAIT
		CALL    WAIT
		;LD     *(_imrvar),A
		;STLM   A,IMR
		STM		0X630,IMR
		NOP
		RSBX	INTM
		RET
		
WAIT:		STM	#0X0FFF,AR0
WAIT0:		STM	#0X00FF,AR1
WAIT1:		BANZ	WAIT1,*AR1-
			BANZ	WAIT0,*AR0-
			RET
			
WAITT:		STM	#0X00FF,AR0
WAITT0:		STM	#0X00F,AR1
WAITT1:		BANZ	WAITT1,*AR1-
			BANZ	WAITT0,*AR0-
			RET		
_leddelay:	ld *(_leddelaytime),A
			stlm A,AR0
leddelay0:	STM	#0XFFFF,AR1
leddelay1:	BANZ	leddelay1,*AR1-
			rpt     #1000
			nop
			BANZ	leddelay0,*AR0-
			RET		
_intdelay:	ld *(_intdelaytime),A
			stlm A,AR0
intdelay0:	STM	#0XF,AR1
intdelay1:	BANZ	intdelay1,*AR1-
			BANZ	intdelay0,*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
;MCBSP1 发送空检测		
DX1EMPT:	STM	 1,SPSA1                                                                                                    
	        LDM	 SPCR1,A			;SPCR21
	        NOP
	        NOP
	        AND	 #0004h,A
	        NOP
	        NOP
	        BC	 DX1EMPT,ANEQ
	        NOP
	        CALL WAITT
	        NOP
	        NOP	        	        	        	        	        	        
	        RET
;----------------------------------------
_clearint0
		ld  IFR,A
		AND #0xfffe,A
		STLM A,IFR
		ret
_hpidsp_host
		STM	0x0a,HPIC				;to init a hpi to host int!
		ret
		.end

⌨️ 快捷键说明

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