📄 fir.asm
字号:
;数字低通滤波器
;fl=1000HZ
;fs=15000Hz
;N=10
.mmregs
.global _data_start ;声明全局函数
.bss mem,100 ;定义变量 mem 存放待计算数据
.bss input,100 ;input存放输入数据
.bss output,100 ;output存放输出数据
.bss coff,10 ;coff 存放滤波器系数
table: ;滤波器抽头系数表,共10阶
.word 0x43,0x5a,0x6e,0x7c,0x84,0x84,0x7c,0x6e,0x5a,0x43
.text
_data_start:
STM #coff,AR4
RPT #9
MVPD table,*AR4+ ;将表中系数读入coff所指的内存中
load:
STM #output,AR3 ;读入输入数据,在此处加断点、探测点
STM #mem,AR6
STM #99,BRC ;设置循环次数,每次输100点
RPTB next-1
loop:
MVMM AR6,AR5 ;将AR6的内容传给AR5,既每计算一次,指针向后移一点,取一组新数据
LD *AR6+,A ;指针后移
STM #coff,AR4
LD #0,A ;A清零
conv:
RPT #9 ;计算10点卷积,A+=mem(m)*coff(n-m)
MAC *AR4+,*AR5+,A
STH A,*AR3+ ;将结果存入output
next:
STM #mem,AR5
STM #input,AR4
RPT #99 ;将输入数据前移
MVDD *AR4+,*AR5+
BC #load,UNC ;无限次循环
ret
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -