📄 diir.asm
字号:
.title "diir1.asm"
.mmregs
.global start
.def start,_c_int00
N .set 6
.copy "IIRIN.inc" ;输入信号x(n)数据
table ;IIR滤波器系数
.word 63
.word 0
.word -188
.word 0
.word 188
.word 0
.word -63
.word 0
.word +11675
.word 0
.word +9663
.word 0
.word +2948
.data
BN .usect "BN",N+1
AN .usect "AN",N+1
INBUF .usect "INBUF",256 ;输入缓冲区在数据区0x2400
OUTPUT .usect "OUTPUT",256 ;输出缓冲区在数据区0x2600
.text
.asg AR0,INDEX_P
.asg AR2,XN_P
.asg AR3,ACOFF_P
.asg AR4,YN_P
.asg AR5,BCOFF_P
_c_int00
b start
nop
nop
start: SSBX FRCT
SSBX OVM
SSBX SXM
STM #BN+N,AR1
RPT #N
MVPD #table,*AR1- ;将bi由程序区存放到数据区
STM #AN+N-1,AR1
RPT #N-1
MVPD #table+N+1,*AR1- ;将ai由程序区存放到数据区
STM #OUTPUT,AR1
RPTZ A,#255
STL A,*AR1+ ;输出数据缓冲区清零
STM #INBUF,AR1
RPT #255
MVPD #INPUT,*AR1+ ;将输入数据由程序区存放到数据区
STM #OUTPUT,YN_P
STM #INBUF,XN_P
STM #N-1,INDEX_P
STM #255,BRC
RPTB LOOP-1
IIR: SUB A,A
STM #BN,BCOFF_P
STM #AN,ACOFF_P
RPT #N-1 ;计算前向通道
MAC *XN_P+,*BCOFF_P+,A
MAC *XN_P, *BCOFF_P,A
MAR *XN_P-0 ;将AR2指针指向x(n-N)
RPT #N-1 ;计算反馈通道
MAC *YN_P+,*ACOFF_P+,A
STH A,*YN_P-0 ;;保存y(n)
LOOP:
EEND B EEND
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -