?? fir.asm
字號:
.include 240x.h
.global start,FIR
.data
.include "lowpass.inc" ;低通濾波器系數(shù)(32個)
N .set 32 ;32點FIR濾波
DPTRI .set 8000h ;輸入波形地址
DPTRO .set 0a000h ;輸出波形地址
i .set 1024 ;輸入波形點數(shù)
.sect ".vectors"
b start
.bss buff,N ;系數(shù)緩存
.bss input,1 ;當(dāng)前輸入數(shù)據(jù)
.bss output,1 ;當(dāng)前輸出數(shù)據(jù)
.text
start:
ldp #0e0H
splk #6fH,WDCR
splk #5555H,WDKEY
splk #0aaaaH,WDKEY ;關(guān)閉看門狗中斷
splk #81feH,SCSR1 ;設(shè)置DSP運行頻率40m
ldp #buff
splk #0,input
splk #0,output
mar *,ar0
lar ar0,#buff
zac ;acc低16位清0
rpt #N-1 ;循環(huán)32次
sacl *+ ;系數(shù)緩存清零
lar ar2,#DPTRI ;ar2->輸入存儲區(qū)
lar ar3,#DPTRO ;ar3->輸出緩沖區(qū)
lar ar7,#i ;ar7=處理波形點數(shù)
mar *,ar2 ;指定當(dāng)前輔助存儲器為ar2
done: lacl *+ ;讀入當(dāng)前輸入值
sacl input
sacl buff ;存入系數(shù)緩存
call FIR ;調(diào)用濾波子程序完成濾波處理
mar *,ar3
sach output,1
sach *+,1,7 ;濾波后的結(jié)果右移1位存到輸出緩沖區(qū)
banz done,*-,2 ;點數(shù)-1,如未處理完循環(huán)
b $
;子程序完成32點FIR濾波
FIR: mar *,ar1
lar ar1,#buff+N-1
mpyk #0 ;乘法器清零
zac ;累加器請零
rpt #N-1 ;計算32個累加和
macd coef,*- ;系數(shù)相乘、累加運算
apac
ret
.end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -