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

📄 fir3.asm

📁 这里面有很多dsp应用程序源码
💻 ASM
字号:
;=============================================================
;	fir3.asm
;用线性缓冲区实现FIR滤波器
;有了前面的基础,本例一次FIR的计算只需要两条指令
;	本例与前不同的是系数直接引用程序存储器的系数表
;N=5  y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4)
;=============================================================
		
			.title		"fir3.asm"
			.mmregs				;定义寄存器名称及对应地址
			.def	CodeStart	;定义程序入口
			;分配数据存储区
x			.usect		"x",6	;y,x(n)...x(n-4)
;PA0			.set	0002H		;数据输出端口
;PA1			.set	0008H		;数据输入端口
indata	    .usect	"buffer",1
outdata	    .usect	"buffer",1
			;参数表
			.data		
COEF:		.word	1*32768/10	;h4 
			.word	-4*32768/10	;h3		
			.word	3*32768/10	;h2
			.word	-4*32768/10	;h1
			.word	1*32768/10	;h0
;==================================================			
;程序区
;==================================================
			.text
CodeStart:	SSBX	FRCT		;小数乘法
			;把x(1)-x(n-4)赋初值0
			STM		#x+2,AR1
			RPT		#3
			ST		#0,*AR1+
			STM		#x+5,AR1		;x(n-4)---AR1
			STM		#4,AR0			;AR0的复位值
			STM     #indata,AR3
			STM		#outdata,AR4
			LD		#x+1,DP
;			PORTR	PA1,@x+1		;输入x(n)
FIR3:		RPTZ	A,#4			;累加器A清0,共迭代5次
			MACD	*AR1-,COEF,A	;乘法累加并移位
			STH		A,*AR1			;暂存y(n)
			MVDK    *AR1+,outdata
			;PORTW	*AR1+,PA0		;输出y(n)
			nop
			BD		FIR3			;循环
			;PORTR	PA1,*AR1+0		;输入新的数据x(n)
			MVKD    indata,*AR1+0
			.end		
								

⌨️ 快捷键说明

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