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

📄 fir.asm

📁 2407 开发板自带的示例代码
💻 ASM
字号:
		.include	240x.h
        .global start,FIR
        .data
        .include "lowpass.inc"	;低通滤波器系数(32个)
N       .set    32		;32点FIR滤波
DPTRI	.set	8000h    	;输入波形地址
DPTRO	.set	0a000h   	;输出波形地址
i		.set	1024		;输入波形点数
        .sect   ".vectors"
        b       start
        .bss    buff,N		;系数缓存
        .bss    input,1		;当前输入数据
        .bss    output,1	;当前输出数据
        .text
start:  
		ldp		#0e0H
		splk	#6fH,WDCR
		splk	#5555H,WDKEY
		splk	#0aaaaH,WDKEY	;关闭看门狗中断 
		splk	#81feH,SCSR1	;设置DSP运行频率40m 
		ldp     #buff
		splk	#0,input
		splk	#0,output
        mar     *,ar0
        lar     ar0,#buff
        zac					;acc低16位清0
        rpt     #N-1		;循环32次
        sacl    *+   		;系数缓存清零
        lar	   ar2,#DPTRI	;ar2->输入存储区
        lar	   ar3,#DPTRO 	;ar3->输出缓冲区
        lar	   ar7,#i		;ar7=处理波形点数
        mar	   *,ar2		;指定当前辅助存储器为ar2
done:   lacl   *+			;读入当前输入值
		sacl   input
		sacl   buff			;存入系数缓存
        call   FIR			;调用滤波子程序完成滤波处理
        mar		*,ar3		
        sach	output,1
        sach	*+,1,7      ;滤波后的结果右移1位存到输出缓冲区
        banz   done,*-,2	;点数-1,如未处理完循环
        b 		$
							;子程序完成32点FIR滤波
FIR:    mar     *,ar1		
        lar     ar1,#buff+N-1
        mpyk    #0			;乘法器清零
        zac					;累加器请零
        rpt     #N-1		;计算32个累加和
        macd    coef,*-		;系数相乘、累加运算
        apac
        ret
        .end

⌨️ 快捷键说明

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