📄 filter.asm
字号:
*************************************
*************滤波 程序***************
*************************************
.mmregs
.ref filter_start
.def START
K_DATA_SIZE .set 256 ;input data number
K_BUFFER_SIZE .set 32 ;buffer > a and b,buffer=2e
K_STACK_SIZE .set 256
K_A .set 21 ;a var number
;K_B .set 4 ;b var number
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 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.WORD 21315, 4595, -2444, 11368, 15066, -2014, -8408, 6957
.WORD 12897, -1643, -5536, 11893, 19128, 4966, 428, 16305
.text
.asg AR2,ORIGIN
.asg AR3,INPUT
.asg AR4,FILTER
.asg AR5,OUTPUT
START:
NOP
NOP
NOP
NOP
SSBX FRCT
NOP
NOP
NOP
SSBX INTM
NOP
NOP
NOP
LD #DATA_DP,DP
STM #SYSTEM_STACK,SP
CALL filter_start
NOP
NOP
NOP
LOOP:
B LOOP
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Y(z) 0.1589+0.4768*(z-1)+0.4768*(z-2)+0.1589*(z-3) *
*------ = ---------------------------------------------- *
* X(z) 1-(-0.1268*(z-1)+0.5239*(z-2)-0.1257(z-3)) *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
.def a1,a2,a3
.def filter_start
a0 .set 03fch
a1 .set 0321h
a2 .set -0000h
a3 .set -0406h
a4 .set -06a1h
a5 .set -05a2h
a6 .set 0000h
a7 .set 0960h
a8 .set 13e6h
a9 .set 1c23h
a10 .set 1cb3h
a11 .set 1c23h
a12 .set 13e6h
a13 .set 0960h
a14 .set 0000h
a15 .set -05a2h
a16 .set -06a1h
a17 .set -0406h
a18 .set -0000h
a19 .set 0321h
a20 .set 03fch
.text
filter_start:
STM #K_CIR,BK
STM #1,AR0
STM #inputdata,ORIGIN
STM #bufferdatax,INPUT
;STM #bufferdatay,FILTER
STM #filterdata,OUTPUT
nop
nop
nop
RPT #K_A-1
MVDD *ORIGIN+,*INPUT+0%
STM #bufferdatax,INPUT
;RPT #K_A-1
;MVDD *INPUT+0%,*FILTER+0%
;STM #bufferdatay,FILTER
;STM #bufferdatax,INPUT
STM #K_DATA_SIZE-20-1,BRC
RPTB filter_end-1
;wait interupt
MVDD *ORIGIN+,*INPUT
RPT #K_A-1-1
MAR *INPUT-0%
MPY *INPUT+0%,#a20,B ;从前往后算
LD B,A
MPY *INPUT+0%,#a19,B
ADD B,A
MPY *INPUT+0%,#a18,B
ADD B,A
MPY *INPUT+0%,#a17,B
ADD B,A
MPY *INPUT+0%,#a16,B
ADD B,A
MPY *INPUT+0%,#a15,B
ADD B,A
MPY *INPUT+0%,#a14,B
ADD B,A
MPY *INPUT+0%,#a13,B
ADD B,A
MPY *INPUT+0%,#a12,B
ADD B,A
MPY *INPUT+0%,#a11,B
ADD B,A
MPY *INPUT+0%,#a10,B
ADD B,A
MPY *INPUT+0%,#a9,B
ADD B,A
MPY *INPUT+0%,#a8,B
ADD B,A
MPY *INPUT+0%,#a7,B
ADD B,A
MPY *INPUT+0%,#a6,B
ADD B,A
MPY *INPUT+0%,#a5,B
ADD B,A
MPY *INPUT+0%,#a4,B
ADD B,A
MPY *INPUT+0%,#a3,B
ADD B,A
MPY *INPUT+0%,#a2,B
ADD B,A
MPY *INPUT+0%,#a1,B
ADD B,A
MPY *INPUT+0%,#a0,B
ADD B,A
;MPY *FILTER+0%,#a3,B
;ADD B,A
;MPY *FILTER+0%,#a2,B
;ADD B,A
;MPY *FILTER+0%,#a1,B
;ADD B,A
;STH A,*FILTER-0%
STH A,*OUTPUT+
;MAR *FILTER-0%
filter_end: NOP
NOP
NOP
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -