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

📄 fir.asm

📁 F2407的10个C语言例程代码
💻 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 + -