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

📄 iir2.asm

📁 这里面有很多dsp应用程序源码
💻 ASM
字号:
*************************************
*用双操作数指令实现二阶IIR滤波器    *
*反馈通道:x0=w(n)=x(n)+A1*x1+A2*x2  *
*前向通道:y(n)=B0*x0+B1*x1+B2*x2    *
*************************************
	.title	"IIR2.asm"
	.mmregs
	.def	start
x2	.usect	"x",1
x1	.usect	"x",1
x0	.usect	"x",1
COEF	.usect	"COEF",5

indata	.usect	"buffer",1
outdata	.usect	"buffer",1
*PA0	.set	10
*PA1	.set	1
	.data
table	.word	0			;x(n-1)
	.word	0			;x(n-2)
	.word	676*32768/10000		;B2=0.1
	.word	1352*32768/10000	;B1=0.2
	.word	676*32768/10000		;B0=0.3
	.word	-4142*32768/10000	;A2=0.5
	.word	707*32768/10000		;A1=-0.4
	.text
start:	SSBX	FRCT
	STM	#x2,AR1	
	RPT	#1
	MVPD	#table,*AR1+
	
	STM	#indata,AR5
	STM	#outdata,AR2
	
	STM	#COEF,AR1		
	RPT	#4
	MVPD	#table+2,*AR1+
	STM	#x2,AR3
	STM	#COEF+4,AR4	;AR4-->A1
	MVMM	AR4,AR1		;保存地址值在AR1中
	STM	#3,BK		;设置循环缓冲区长度
	STM	#-1,AR0		;设置变址寻址步长
	
IIR2:	;PORTR	PA1,*AR3	;从PA1口输入数据x(n)
	MVDD	*AR5,*AR3
	LD	*AR3+0%,16,A	;计算反馈通道,A=x(n)
	MAC	*AR3,*AR4,A	;A=x(n)+A1*x1
	MAC	*AR3+0%,*AR4-,A	;A=x(n)+A1*x1+A1*x1
	MAC	*AR3+0%,*AR4-,A	;A=x(n)+2*A1*x1+A2*x2
	STH	A,*AR3		;保存x0
	MPY	*AR3+0%,*AR4-,A	;计算前向通道,A=B0*x0
	MAC	*AR3+0%,*AR4-,A	;A=B0*x0+B1*x1
	MAC	*AR3,*AR4-,A	;B=B0*x0+B1*x1+B2*x2=y(n)
	STH	A,*AR3		;保存y(n)
	MVMM	AR1,AR4		;AR4重新指向A1
	BD	IIR2		;循环
;	PORTW	*AR3,PA0	;向PA0口输出数据
	MVDD	*AR3,*AR2
	nop
	.end

⌨️ 快捷键说明

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