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

📄 fir2.asm

📁 用线性缓冲区和间接寻址方法实现FIR滤波器 * *N=5,y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4)
💻 ASM
字号:
**********************************************************
*	用线性缓冲区和间接寻址方法实现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	"fir2.asm"
	.mmregs			;定义寄存器名称及对应地址
	.def	start		;定义程序入口
				;分配数据存储区
	.bss	y,1		;y
x	.usect	"x",5		;x(n)...x(n-4)
h	.usect	"h",5		;h(n)...h(n-4)

PA0	.set	0000H		;数据输出端口
PA1	.set	0001H		;数据输入端口
				;参数表
	.data	
table:	.word	2*32768/10	;h0=0.2
	.word	-3*32768/10	;h1=-0.3
	.word	4*32768/10	;h2=0.4
	.word	-3*32768/10	;h3=-0.3
	.word	2*32768/10	;h4=0.2

	.text
start:	STM	#h,AR2		;把参数表复制到数据存储区
	RPT	#4
	MVPD	table,*AR2+	;逐项复制参数表
				;把x(1)--x(n-4)赋初值0
	STM	#x+1,AR1
	RPT	#3
	ST	#0,*AR1+

	STM	#x+4,AR1	;AR1-->x(n-4)
	STM	#h+4,AR2	;AR2-->h(n-4)
	STM	#4,AR0		;指针复位值4-->AR0
	SSBX	FRCT		;小数乘法
	LD	#x,DP
	PORTR	PA1,@x		;输入x(n)
fir2:	LD	*AR1-,T 	;T=x(n-4)
	MPY	*AR2-,A		;A=T*h(n-4)
	LTD	*AR1-		;T=x(n-3),x(n-4)=x(n-3)
	MAC	*AR2-,A		;A=A+T*h(n-3)
	LTD	*AR1-		;T=x(n-2),x(n-3)=x(n-2)
	MAC	*AR2-,A		;A=A+T*h(n-2)
	LTD	*AR1-		;T=x(n-1),x(n-2)=x(n-1)
	MAC	*AR2-,A		;A=A+T*h(n-1)
	LTD	*AR1		;T=x(n),x(n-1)=x(n)
	MAC	*AR2+0,A	;A=A+h(n)*x(n),AR2复原指向h4
	STH	A,@y		;保存结果
	PORTW	@y,PA0		;输出结果
	BD	fir2
	PORTR	PA1,*AR1+0	;读下一个输入数据
	.end

⌨️ 快捷键说明

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