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

📄 fir4.asm

📁 *用循环缓冲区和双操作数寻址方法实现FIR滤波器 *N=80,y(n)=h0*x(n)+h1*x(n-1)+...+h78*x(n-78)+h79*x(n-79) *先用matlab
💻 ASM
字号:
*******************************************************************
*用循环缓冲区和双操作数寻址方法实现FIR滤波器
*N=80,y(n)=h0*x(n)+h1*x(n-1)+...+h78*x(n-78)+h79*x(n-79)
*先用matlab,选择80点汉明窗设计一个截止频率为0.2pi的低通滤波器
******************************************************************
	.title	"fir4.asm"
	.mmregs	
	.def	start
	.bss	y,1		;y
xn	.usect	"xn",80		;xn
h	.usect	"h",80		;h
;PA0	.set	0002H		;数据输出端口
;PA1	.set	0008H		;数据输入端口
		.bss    indata,1
		.bss	outdata,1				
	.data
table:
	.word -1,-4,-8,-12,-18,-25,-33,-42
	.word -52,-63,-75,-86,-96,-103,-108,-107
	.word -102,-89,-69,-39,0,49,109,179
	.word 260,350,449,555,667,782,898,1014
	.word 1126,1232,1330,1417,1492,1552,1596,1622
	.word 1631,1622,1596,1552,1492,1417,1330,1232
	.word 1126,1014,898,782,667,555,449,350
	.word 260,179,109,49,0,-39,-69,-89
	.word -102,-107,-108,-103,-96,-86,-75,-63
	.word -52,-42,-33,-25,-18,-12,-8,-4

start:	
    SSBX	FRCT			;小数乘法
	STM	#xn,AR1
	RPT	#79
	ST  	#0,*AR1+		;把x(n)-x(n-79)赋始值0
	STM	#h,AR1				
	RPT	#79
	MVPD	#table,*AR1+		;把参数表复制到数据存储区
	STM	#xn+79,AR3		;AR3-->x(n-79)
	STM	#h+79,AR4		;AR4-->h(n-79)
	STM	#80,BK			;循环缓冲区大小80	
	STM	#-1,AR0			;指针调整值-1
	LD	#xn,DP			;DP指向xn所在页
;	PORTR	PA1,@xn			;输入数据
;	LD	#y,DP			;DP指向y所在页
FIR:
	NOP
    MVKD	indata,*AR3+0%
	RPTZ	A,#79
	MAC	*AR3+0%,*AR4+0%,A	;A=(AR3)*(AR4)+A, AR3=AR3+AR0,AR4=AR4+AR0 
    STH     A,@outdata
    NOP
;	STH	A,@y			;保存计算结果
;	PORTW	@y,PA0			;输出结果
	B	FIR			;延时跳转
;	PORTR	PA1,*AR3+0%		;新数据覆盖了最旧的数据
	.end

⌨️ 快捷键说明

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