📄 fir2.asm
字号:
.title "FIR2.ASM"
;用线性缓冲区和间接寻址方法实现FIR滤波器
.mmregs
.def _c_int00
x .usect "x",5
h .usect "h",5
.bss y,10
.bss x1,10
PA0 .set 0
PA1 .set 1
.data
table: .word 2*32768/10
.word -3*32768/10
.word 4*32768/10
.word -3*32768/10
.word 2*32768/10
table1: .word 0x7fff
.word 0
.word 0
.word 0
.word 0
.word 0
.text
_c_int00: SSBX FRCT
STM #h,AR2
RPT #4
MVPD table,*AR2+
STM #x1,AR1
RPT 5
MVPD table1,*AR1+
STM #y,AR5
STM #x+4,AR1 ;AR1指向x(n-4)
STM #h+4,AR2 ;AR2指向h4
STM #4,AR0 ;指针复位值4--AR0
STM #x1,AR3
STM #5,BRC
RPTB loop-1
MVMD *AR3+,@x
; PORTR PA1,@XN ;input x(n)
FIR1: LD *AR1-,T ;x(n-4)--T
MPY *AR2-,A ;h4*x(n-4)--A
LTD *AR1- ;x(n-3)--T
;x(n-3)--x(n-4)
MAC *AR2-,A ;A+h3*x(n-3)--A
LTD *AR1-
MAC *AR2-,A
LTD *AR1-
MAC *AR2-,A
LTD *AR1+0
MAC *AR2+0,A
STH A,*AR5+ ;save y(n)
NOP
loop: NOP
; PORTW @y,PA0 ;output y(n)
; BD FIR1 ;循环
; PORTR PA1,@XN ;input x(n)
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -