?? fir3.asm
字號:
;=============================================================
; fir3.asm
;用線性緩沖區實現FIR濾波器
;有了前面的基礎,本例一次FIR的計算只需要兩條指令
; 本例與前不同的是系數直接引用程序存儲器的系數表
;N=5 y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4)
;=============================================================
.title "fir3.asm"
.mmregs ;定義寄存器名稱及對應地址
.def CodeStart ;定義程序入口
;分配數據存儲區
x .usect "x",6 ;y,x(n)...x(n-4)
;PA0 .set 0002H ;數據輸出端口
;PA1 .set 0008H ;數據輸入端口
indata .usect "buffer",1
outdata .usect "buffer",1
;參數表
.data
COEF: .word 1*32768/10 ;h4
.word -4*32768/10 ;h3
.word 3*32768/10 ;h2
.word -4*32768/10 ;h1
.word 1*32768/10 ;h0
;==================================================
;程序區
;==================================================
.text
CodeStart: SSBX FRCT ;小數乘法
;把x(1)-x(n-4)賦初值0
STM #x+2,AR1
RPT #3
ST #0,*AR1+
STM #x+5,AR1 ;x(n-4)---AR1
STM #4,AR0 ;AR0的復位值
STM #indata,AR3
STM #outdata,AR4
LD #x+1,DP
; PORTR PA1,@x+1 ;輸入x(n)
FIR3: RPTZ A,#4 ;累加器A清0,共迭代5次
MACD *AR1-,COEF,A ;乘法累加并移位
STH A,*AR1 ;暫存y(n)
MVDK *AR1+,outdata
;PORTW *AR1+,PA0 ;輸出y(n)
nop
BD FIR3 ;循環
;PORTR PA1,*AR1+0 ;輸入新的數據x(n)
MVKD indata,*AR1+0
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -