📄 iir.asm
字号:
;**************************
;* IIR.ASM IIR Filter *
;**************************
.title "iir.asm"
.mmregs
.def _c_int00
K_IIR_INDEX .SET -1
K_IIR_BRRF .SET 9
K_FRAME_SIZE .SET 256
.data
output .space K_FRAME_SIZE*16
;input .copy iir_impulse_input
input .copy iir_100_1k_input
;input .copy iir_100_1500_input
COFF: .sect "COFF_IIR"
.word 0 ;X(N-4)
.word 0 ;X(N-3)
.word 0 ;X(N-2)
.word 0 ;X(N-1)
.word 0 ;Y(N-4)
.word 0 ;Y(N-3)
.word 0 ;Y(N-2)
.word 0 ;Y(N-1)
.word 3116 ;B4=0.0951
.word -10286 ;B3=-0.3139
.word 14615 ;B2=0.4460
.word -10286 ;B1=-0.3139
.word 3116 ;B0=0.0951
.word -22082 ;A4=-0.06739
.word 31149 ;A3/3=2.8518/3
.word -30484 ;A2/5=-4.4615/5
.word 28383 ;A1/4=3.4674/4
COFF_END
X .usect "X",5
Y .usect "Y",5
B .usect "B",5
A .usect "A",5
.text
_c_int00: SSBX FRCT
STM #X,AR1
RPT #3
MVPD #COFF,*AR1+
STM #Y,AR1
RPT #3
MVPD #COFF+4,*AR1+
STM #B,AR1
RPT #4
MVPD #COFF+8,*AR1+
STM #A,AR1
RPT #3
MVPD #COFF+13,*AR1+
STM #X+4,AR2
STM #A+3,AR3
STM #Y+3,AR4
STM #B+4,AR5
STM #5,BK
STM #K_IIR_INDEX,AR0
IIR_TASK STM #input,AR6
STM #output,AR7
RPTBD IIR_FILTER_LOOP-1
IIR_FILTER: STM K_FRAME_SIZE-1,BRC
LD *AR6,B
STL B,*AR2
LD #0,A
MPY *AR2+0%,*AR5+0%,A ;Forward path
MAC *AR2+0%,*AR5+0%,A
MAC *AR2+0%,*AR5+0%,A
MAC *AR2+0%,*AR5+0%,A
MAC *AR2,*AR5+0%,A
MAC *AR4,*AR3,A ;Feedback path
MAC *AR4,*AR3,A ;*A1/4
MAC *AR4,*AR3,A
MAC *AR4+0%,*AR3+0%,A
MAC *AR4,*AR3,A ;*A2/5
MAC *AR4,*AR3,A
MAC *AR4,*AR3,A
MAC *AR4,*AR3,A
MAC *AR4+0%,*AR3+0%,A
MAC *AR4,*AR3,A ;*A3/3
MAC *AR4,*AR3,A
MAC *AR4+0%,*AR3+0%,A
MAC *AR4+0%,*AR3+0%,A ;*A4
MAR *AR3+0%
STH A,*AR4
STH A,*AR7+
MAR *AR6+
IIR_FILTER_LOOP
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -