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

📄 fir2.asm

📁 FIR(有限冲激相应)滤波器的DSP实现程序
💻 ASM
字号:
			.mmregs
			.global start
			.def start,_c_int00
	
KS			.set	256
N			.set	16
COEF_FIR	.sect	"COEF_FIR"
			.word	62,188,86,-764,-1453,625,6202,11439
			.data
INPUT		.copy	"firin.inc"			;输入数据在数据区0x2400
OUTPUT		.space	1024				;输出数据在数据区0x2500
x_new		.usect	"DATA1",N/2
x_old		.usect	"DATA2",N/2
size		.set	N/2
			.text

_c_int00
			b		start
			nop
			nop
start:		SSBX	FRCT				;设置FRCT(小数方式位)
			STM		#x_new,AR2			;AR2指向New缓冲区第一个单元
			STM		#x_old+(size-1),AR3	;AR3指向Old缓冲区最后一个单元
			STM		#-1,AR0
			STM		#INPUT,AR4			;模拟输入数据指针AR4初始化
			STM		#OUTPUT,AR5			;滤波器输出数据指针AR5初始化
			STM		#KS-1,BRC			;;//块重复次数
			RPTBD	LOOP-1
			STM		#size,BK			;循环缓冲区块大小BK=size
			LD		*AR4+,A		
			STL		A,*AR2				;输入样本值
FIR_FILTER:	ADD		*AR2+0%,*AR3+0%,A	;AH=x(n)+x(n-15)
			RPTZ	B,#size-1			;;//重复执行下一条指令size次
			firs	*AR2+0%,*AR3+0%,COEF_FIR;B=B+AH*h(0),AH=x(n-1)+x(n-14)
			STH		B,*AR5+			;保存滤波输出数据到AP5所指向单元
			MAR		*+AR2(2)%			;修正AR2,指向New缓冲区最老的数据替代
			MAR		*AR3+%				;修正AR3,指向OLD缓冲区最老的数据替代
			MVDD	*AR2,*AR3+0%		;用New缓冲区最老的数据替代Old缓冲区中最老的数据
LOOP:
EEND		B		EEND
			.end
			

⌨️ 快捷键说明

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