⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iir1.asm

📁 有限长和无限长数字滤波器的设计程序原代码及完整报告
💻 ASM
字号:
      .title  "IIR.ASM"
      .mmregs
      .def    start
DX    .usect  "DX" ,3
DY    .usect  "DY" ,3
DB    .usect  "DB" ,3
DA    .usect  "DA" ,3
PA0   .set   0
PA1   .set   1
      .data  
table: .word   0        ;x(n-2)
      .word   0         ;x(n-1)
      .word   0         ;y(n-2)
      .word   0         ;y(n-1)
      .word   1*32768/10  ;b2
      .word   2*32768/10  ;b1
      .word   3*32768/10  ;b0
      .word   5*32768/10  ;a2
      .word   -4*32768/10 ;a1
      .text
start: SSBX FRCT       ;  设置小数乘法
       STM  #DX,AR1    ; AR1指向DX
       RPT  #1         ;传送初始化数据x(n-2),x(n-1)

       MVPD  #table,*AR1+;
       STM  #DY,AR1    ;AR1指向DY
       RPT  #1         ;传送初始化数据y(n-2),y(n-1)
       MVPD #table+2,*AR1+;
       STM  #DB,AR1    ;AR1指向DY
       RPT #2          ;传送系数b2,b1,b0
      MVPD  #table+4,*AR1+;
       STM  #DA,AR1    ;AR1指向DA
       RPT  #1         ;传送系数a2,a1
       MVPD #table+7,*AR1+;
       STM  #DX+2,AR2  ;设定DX段指针AR2
       STM  #DY+1,AR3  ;设定DX段指针AR3
       ST   #DB+2,AR4  ;设定DX段指针AR4
       STM  #DA+1,AR5  ;设定DX段指针AR5
       STM  #3,BK      ; 设置缓冲区长度 
       STM  #-1,AR2    ;设置变址寻址步长
 IIR:  PORTR  PA1,*AR2 ;输入数据X(n)
       MPY   *AR2+0%,AR4+0%,A  ; 计算前向通道A=b0*x(n)
       MAC   *AR2+0%,AR4+0%,A  ;A=b0*x(n)
       MAC   *AR2,AR4+0%,A     ;A=b0*x(n)+b1*x(n-1)
       MAC   *AR3+0%,AR5+0%,A  ;
       MAC   *AR3+0%,AR5+0%,A;
       MAR  *AR5+0%            ;修正AR5
       STH  A,*AR3             ;保存y(n)   
       BD   IIR                ;循环
       PORTW   *AR3,PA0        ;输出y(n)
       .end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -