📄 fir1.asm
字号:
.title "fir1.asm"
.copy "init.h"
H: .equ 39Ah ;存放滤波器系数的起始地址
X: .equ 300h ;存放输入数据的起始地址
Y: .equ 2300h ;存放滤波器输出数据的起始地址
XN: .equ 380h ;循环缓冲区
.data
;h0=h10=000h,h1=h9=2FEh,h2=h8=675h,h3=h7=9B0h,h4=h6=0BF9h,h5=0CCDh
DH: .word 000h,02FEh,0675h,09B0h,0BF9h,0CCDh
.word 0BF9h, 09B0h, 0675h, 02FEh, 000h ;滤波器系数
.text
START: SOVM
ldp #0
LARP 1
LAR AR1,#H
RPT #10
BLDD #DH,*- ;将滤波器系数移至390h~39Ah单元中
LAR AR0,#380h ;#XN
ZAC
MAR *,AR0
RPT #10
SACL *+ ;将循环缓冲区清0
LAR AR1,#X
LAR AR3,#Y
LAR AR4,#127
NEXT1: LAR AR6,#XN
LAR AR7,#10
NEXT: SOVM
LAR AR5,#38Ah ;N(11)个单元数据缓冲区的底部
LAR AR2,#H
MAR *,AR2
LACC *
SACL 75h
ZAC
LT *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *-,AR5
MPY *-,AR2
LTD *,AR5
MPY *
APAC ;读取N个输入样本并进行N次乘法和累加
LARP 3
SACH *+,2 ;保存滤波器输出,滤波结果右移14位
MAR *,AR2
LACC 75h
SACL *
MAR *,AR1
LACC *+
MAR *,AR6
SACL *+ ;读入新样本
LARP 7
BANZ NEXT
LARP 4
BANZ NEXT1
HERE: B HERE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -