📄 fir2.asm
字号:
.mmregs
.global start
.def start,_c_int00
KS .set 256 ;输入样本数据个数
N .set 16 ;FIR滤波器阶数
COEF_FIR .sect "COEF_FIR" ;FIR滤波器系数
.word 62
.word 188
.word 86
.word -764
.word -1453
.word 625
.word 6202
.word 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 ; 模拟输入数据指针初始化
STM #OUTPUT,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
RPTZ B, #size-1
FIRS *AR2+0%,*AR3+0%,COEF_FIR
STH B,*AR5+
MAR *+AR2(2)%
MAR *AR3+%
MVDD *AR2 , *AR3+0%
LOOP:
EEND B EEND
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -