⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.asm

📁 滤波器采样频率为600Hz
💻 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             ; 系数个数
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
     
;低同滤波系数
; -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     ;定义循环执行的次数,共256点
          STM    #K_CIR,BK                ;定义循环缓存大小
          STM    #1,AR0                   ;set the circular buffer size and the step size
   
          RPTB   filter_end-1
          
          ;读入一个新信号数据                
          MVDD   *ORIGIN+,*INPUT         
     	  RPT    #K_B-1-1                       ;
     	  MAR    *INPUT-0%                  ;调整指针,指向最旧的一个信号数据
 
 
          ;对系数进行计算
          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+ ;输出新的滤波信号数据
                 
          
filter_end:         
          
       

          NOP     
          RET

          .end
          
          
          
          
          
                
           
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -