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

📄 fir_f.asm

📁 精心收藏的数字信号处理滤波程序源码
💻 ASM
字号:

************************************************************
****标题
		.title "FIR汇编代码"	

************************************************************

              .global init
****中断表
		.sect "vectors" 			;C32中断跳转表
		BR INIT
		BR ISR0				;INT0- 中断0地址给PC 
		BR ISR1				;INT1- 中断1地址给PC
		BR ISR2				;INT2- 中断2地址给PC
		BR ISR3				;INT3- 中断3地址给PC
		BR XISR0			;XINT0- 串口0发送中断地址给PC
		BR RISR0			;RINT0- 串口0接收中断地址给PC
		.space	2			;保留两个地址
		BR TISR0			;TINT0- 定时器0中断地址给PC
		BR TISR1			;TINT1- 定时器1中断地址给PC
		BR DISR0			;DINT0- DMA0中断地址给PC
		.space	52			;保留52个地址空间

***************************************************
****数据段
		.data
DATP		                        	;用于DP指针赋值
HN              .float   -0.0024,-0.0036,-0.0052,-0.0046,0.0027
     	        .float   0.0204,0.0497,0.0867,0.1239,0.1515
     	        .float    0.1617,0.1515,0.1239,0.0867,0.0497
     	        .float   0.0204,0.0027,-0.0046,-0.0052,-0.0036
     	        .float   -0.0024
D0A		.word	0808000H		;DMA0控制寄存器地址
D1A		.word	0808010H		;DMA1控制寄存器地址
T0A		.word	0808020H		;TIMER0控制寄存器地址
T1A		.word	0808030H		;TIMER1控制寄存器地址
SPA		.word	0808040H		;串口控制寄存器地址
IOSTRA	        .word	0808060H		;IOSTRB控制寄存器地址
STR0A	        .word	0808064H		;STRB0总线控制寄存器地址
STR1A	        .word	0808068H		;STRB1总线控制寄存器地址

T0CLT	        .word	00002C1H		;TIMER1控制寄存器初始化值
SCLTA	        .word	02170300H		;串口控制寄存器初始化值
SCLTB	        .word	0E970300H		;串口控制寄存器初始化值
SXCLT	        .word	0000111H		;串口发送控制寄存器初始化值
SRCLT	        .word	0000111H		;串口接收控制寄存器初始化值
STCLT	        .word	0000000H		;串口定时控制寄存器初始化值
STDA 	        .word 	0001800H		;状态寄存器初始化值
IEDA 	        .word 	0000020H		;中断允许寄存器初始化值
AIC1            .word   0002448H         
AIC2		.word  	0000001H 
AIC3            .word   0001E3EH  
AIC4		.word  	0000067H 
IOSTRD          .word 	0000F8H
STR0D	        .word	0F10F8H
STR1D	        .word	0F10F8H
MASK		.word	00FFFCH
INTA	        .word	88000000H

AD_HN           .word   HN
AD_SIG	        .word   SIG
AD_STK 	        .word   STACK			;AD_STK保存STACK起始地址

 .bss ADDATA,1
 .bss STACK,100                                 ;堆栈空间

SIG		.usect "sigspc",50		;原信号空间

***************************************************
****程序段
		.text

*		处理器初始化部分
INIT		LDP DATP		;设置DP
		LDI @STDA,ST		;设置ST寄存器
		XOR IE,IE		;设置IE寄存器
		XOR IF,IF		;初始化IF寄存器
		LDI @AD_STK,SP	        ;设置堆栈指针
		LDI 22H,IOF		;设置XF0\1为通用输入引脚

*		设置总线寄存器
		LDI @IOSTRA,AR0
		LDI @IOSTRD,R0
		STI R0,*AR0
		LDI @STR0A,AR0
		LDI @STR0D,R0
		STI R0,*AR0
		LDI @STR1A,AR0
		LDI @STR1D,R0
		STI R0,*AR0
		
		OR 2000H,ST
		
*		进行TLC32044与TMS320C32通信初始化
		LDI @SPA,AR0				;初始化串口0
		LDI @SCLTA,R1
		STI R1,*AR0
		LDI @SXCLT,R1
		STI R1,*+AR0(2)
		STI R1,*+AR0(3)
		LDI @SCLTB,R1
		STI R1,*AR0

		LDI 66H,IOF				;TLC32044复位结束
		RPTS 99
		NOP

*		发送初始化AIC序列
                LDI 3,R1
		STI R1,*+AR0(8)
		CALL WAIT_TRANSMIT
		LDI @AIC1,R1
		STI R1,*+AR0(8)
		LDI *+AR0(12),R0
		CALL WAIT_TRANSMIT
		LDI 3,R1
		STI R1,*+AR0(8)
		CALL WAIT_TRANSMIT
		LDI @AIC2,R1
		STI R1,*+AR0(8)
		LDI *+AR0(12),R0
		CALL WAIT_TRANSMIT
		LDI 3,R1
		STI R1,*+AR0(8)
		CALL WAIT_TRANSMIT
		LDI @AIC3,R1
		STI R1,*+AR0(8)
		LDI *+AR0(12),R0
		CALL WAIT_TRANSMIT
		LDI 3,R1
		STI R1,*+AR0(8)
		CALL WAIT_TRANSMIT
		LDI @AIC4,R1
		STI R1,*+AR0(8)
		LDI *+AR0(12),R0
		CALL WAIT_TRANSMIT
        

                LDI @AD_SIG,AR7                
                LDF 0,R0                           
                LDI 20,RC            ;信号源空间初始化清零
                RPTS
                STF R0,*AR7++
	        
                LDI @AD_HN,AR1
                LDI @AD_SIG,AR2
                LDI 21,BK
                  	
FIR           	CALL WAIT_RECEIVE
		LDI @ADDATA,R0
		AND @MASK,R0
                LSH 16,R0
                ASH -18,R0           ;符号位扩展
                
                FLOAT  R0,R1         ;输入信号数据变为浮点数
                LDI @AD_SIG,AR7      
                ADDI   20,AR7        ;AR7指向最后一个数据的地址  
               
                LDI  19,RC
                RPTB  LP1
                LDF   *-AR7,R0
LP1             STF   R0,*AR7--
                
                STF   R1,*AR7        ;新数据存入
                
                LDF   0.0,R0
                LDF   0.0,R2
                LDI @AD_HN,AR1
                LDI 20,RC
                RPTS
                MPYF3   *AR1++,*AR7++,R0
                ||ADDF3 R0,R2,R2    
                
                ADDF3   R0,R2,R2
               
                FIX    R2,R3 
                ASH    18,R3
                ASH    -16,R3
                B  FIR                
                                           
WAIT_TRANSMIT
		LDI *AR0,R1
		TSTB 2H,R1
		BZ WAIT_TRANSMIT
		RETS

WAIT_RECEIVE
		LDI *AR0,R1
		TSTB 1H,R1
		BZ WAIT_RECEIVE
		LDI *+AR0(12),R0
		STI R0,@ADDATA
		AND 0FFFCH,R0
		STI R3,*+AR0(8)
		RETS

******************************************************
*		INT0服务子程序
ISR0

		RETI

******************************************************
*		INT1服务子程序
ISR1

		RETI

******************************************************
*		INT2服务子程序
ISR2
		RETI

******************************************************
*		INT3服务子程序
ISR3
		RETI

******************************************************
*		串口0发送中断服务子程序
XISR0
		RETI

******************************************************
*		串口0接收中断服务子程序
RISR0		
		RETI

******************************************************
*		定时器0中断服务子程序
TISR0

		RETI

******************************************************
*		定时器1中断服务子程序
TISR1
		RETI

******************************************************
*		DMA0中断服务子程序
DISR0
		RETI
               

⌨️ 快捷键说明

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