?? fir0.asm
字號:
.mmregs
.global start
.def start,_c_int00
INDEX .set 1
KS .set 256 ;輸入樣本數據個數
N .set 17 ;FIR濾波器階數
COFF_FIR .sect "COFF_FIR" ;FIR濾波器系數
.word 0
.word 158
.word 264
.word -290
.word -1406
.word -951
.word 3187
.word 9287
.word 12272
.word 9287
.word 3187
.word -951
.word -1406
.word -290
.word 260
.word 158
.word 0
.data
INPUT .copy "firin.inc" ;輸入數據在數據區0x2400
OUTPUT .space 1024 ;輸出數據在數據區0x2500
;COFFTAB .usect "FIR_COFF",N
DATABUF .usect "FIR_BFR",N
BOS .usect "STACK",0Fh
TOS .usect "STACK",1
.text
;.asg AR0,INDEX_P
.asg AR4,DATA_P ;輸入數據x(n)循環緩沖區指針
.asg AR6,INBUF_P ;模擬輸入數據指針
.asg AR7,OUTBUF_P ;FIR濾波器輸出數據指針
_c_int00
b start
nop
nop
start: SSBX FRCT ;小數乘法編程時,設置FRCT(小數方式)位
;STM #INDEX,INDEX_P
STM #DATABUF,DATA_P ;數據緩沖區清零
RPTZ A,#N-1
STL A,*DATA_P+
FIR_TASK:
STM #DATABUF,DATA_P
STM #INPUT,INBUF_P
STM #OUTPUT,OUTBUF_P
STM #KS-1,BRC
RPTB LOOP-1
LD *INBUF_P+,A ;裝載輸入數據
FIR_FILTER: ;FIR濾波運算
STL A,*DATA_P ;輸入樣本值x(n)
STM #DATABUF+N-1,DATA_P ;數據緩沖區指針指向x[n-(N-1)]
RPTZ A, #N-1
MACD *DATA_P-,COFF_FIR,A
STH A,*OUTBUF_P+
MAR *DATA_P+
LOOP:
EEND B EEND
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -