📄 fir3.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 "fir3.asm"
.mmregs ;定义寄存器名称及对应地址
.def start ;定义程序入口
;分配数据存储区
x .usect "x",6 ;y,x(n)...x(n-4)
PA0 .set 0002H ;数据输出端口
PA1 .set 0008H ;数据输入端口
.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
start: SSBX FRCT ;小数乘法
STM #x+2,AR1 ;把x(1)-x(n-4)赋初值0
RPT #3
ST #0,*AR1+
STM #x+5,AR1 ;AR1-->x(n-4)
STM #4,AR0 ;AR0的复位值
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)
PORTW *AR1+,PA0 ;输出y(n)
BD FIR3 ;循环
PORTR PA1,*AR1+0 ;输入新的数据x(n),AR1指向x(n-4)
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -