📄 main.asm
字号:
.title "main.asm"
.copy "dsp_init.h"
H: .equ 3F0h ;存放滤波器系数的起始地址
X: .equ 300h ;存放输入数据的起始地址
Y: .equ 2300h ;存放滤波器输出数据的起始地址
XN: .equ 380h ;线性缓冲区
.data
INPUT .copy "fir.dat" ;模拟输入在数据存储区0x300
OUTPUT .sect "output" ;输出数据在数据区0x2300
.space 200*16 ;K_FRAME_SIZE*16 ;
;h0=h10=000h,h1=h9=2FEh,h2=h8=675h,h3=h7=9AFh,h4=h6=0BF9h,h5=0CCCh
DH: .word 0ff3ch,000h,02FEh,0675h,09AFh,0BF9h,0CCCh
.word 0BF9h, 09AFh, 0675h, 02FEh, 000h,0ff3ch ;滤波器系数
.text
START:
SETC OVM
LARP 1
LAR AR1,#H
RPT #12
BLDD #DH,*+ ;将滤波器系数移至3f0h开始的单元中
LAR AR0,#XN ; #380h
ZAC
MAR *,AR0
RPT #12
SACL *+ ;将存放N个样本的数据缓冲区清0
LAR AR1,#X
LAR AR3,#Y
LAR AR4,#200
NEXT: SETC OVM
LAR AR5,#38ch ;N(13)个单元数据缓冲区的底部
LAR AR2,#H
MAR *,AR1
LACC *+
LDP #7
SACL XN ;读入样本到数据缓冲区的顶部
MAR *,AR5
ZAC
LT *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+,AR5
LTD *-,AR2
MPY *+
APAC ;读取N个输入样本并进行N次乘法和累加
LARP 3
SACH *+,2 ;保存滤波器输出,滤波结果右移14位
LARP 4
BANZ NEXT
HERE: B HERE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -