?? filter.asm
字號:
.mmregs
.def start
.ref filter_start
K_DATA_SIZE .set 256 ; input data size
K_BUFFER_SIZE .set 16 ; processing buffer size,must be greater than the number of a and b, and must be power of 2
K_STACK_SIZE .set 256 ; stack size
K_B .set 11 ; 系數(shù)個數(shù)
K_CIR .set K_BUFFER_SIZE
STACK .usect "stack",K_STACK_SIZE
SYSTEM_STACK .set K_STACK_SIZE+STACK
DATA_DP .usect "filter_vars",0
filterdata .usect "filter_vars",K_DATA_SIZE
bufferdatay .usect "filter_vars",K_BUFFER_SIZE*2
bufferdatax .usect "filter_vars",K_BUFFER_SIZE*2
.data
.global inputdata
inputdata
.WORD 75, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16304
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16304
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16304
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12879, -1643, -5536, 11893, 19128, 4966, 428, 16304
.text
.asg AR2,ORIGIN
.asg AR3,INPUT
.asg AR4,FILTER
.asg AR5,OUTPUT
.asg AR7,TBL
start:
SSBX FRCT
SSBX INTM
LD #DATA_DP,DP
STM #STACK,SP
CALL filter_start
NOP
NOP
NOP
LOOP
B LOOP
***************************************************************
***************************************************************
.def b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
.def filter_start,COE_TBL
;低同濾波系數(shù)
; -1107, -927, 887, 4540, 8346, 9977, 8346, 4540, 887,
; -927, -1107
;
;
COE_TBL:
b1 .set -1107;
b2 .set -927;
b3 .set 887;
b4 .set 4540;
b5 .set 8346;
b6 .set 9977;
b7 .set 8346;
b8 .set 4540;
b9 .set 887;
b10 .set -927;
b11 .set -1107;
.bss table,K_B
.bss x,3
.text
filter_start:
STM #inputdata,ORIGIN
STM #bufferdatax,INPUT
STM #filterdata,OUTPUT
;filtering
STM #K_DATA_SIZE-1,BRC ;定義循環(huán)執(zhí)行的次數(shù),共256點
STM #K_CIR,BK ;定義循環(huán)緩存大小
STM #1,AR0 ;set the circular buffer size and the step size
RPTB filter_end-1
;讀入一個新信號數(shù)據(jù)
MVDD *ORIGIN+,*INPUT
RPT #K_B-1-1 ;
MAR *INPUT-0% ;調(diào)整指針,指向最舊的一個信號數(shù)據(jù)
;對系數(shù)進行計算
MPY *INPUT+0%,#b11,B
LD B,A
MPY *INPUT+0%,#b10,B
ADD B,A
MPY *INPUT+0%,#b9,B
ADD B,A
MPY *INPUT+0%,#b8,B
ADD B,A
MPY *INPUT+0%,#b7,B
ADD B,A
MPY *INPUT+0%,#b6,B
ADD B,A
MPY *INPUT+0%,#b5,B
ADD B,A
MPY *INPUT+0%,#b4,B
ADD B,A
MPY *INPUT+0%,#b3,B
ADD B,A
MPY *INPUT+0%,#b2,B
ADD B,A
MPY *INPUT+0%,#b1,B
ADD B,A
STH A,*OUTPUT+ ;輸出新的濾波信號數(shù)據(jù)
filter_end:
NOP
RET
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -