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

📄 lms.asm

📁 基于TMS320C32的自适应滤波程序,已调试通过.可以和低通滤波做比较 观察其优点 开发环境
💻 ASM
字号:
;*****************************************************************************
;  Function:	  uart.asm         
;  Version :	 1.00
;  Description:  uart
;
;  Copyright Texas instruments Inc, 2000

;*****************************************************************************
    .mmregs  

;	.global _sample_buff

;*****************************************************************************
        .def	_lms
        .global _sindata   
MU   .set 327		;收敛因子U=0.01  ,Q15
WN   .set 200h       ;滤波器系数的起始地址
X0   .set 3BFH
XN   .set 3feh
Y    .set 70h
ONE  .set 71h
U    .set 72h
ERR  .set 73h
D    .set 74h
ERRF .set 75h
	.text                

_lms:setc intm 
      nop
      MAR  *,AR1 
      sst  #1,*+
      sst  #0,*+
      sar  ar0,*+
      sar  ar1,*+
      SAR  AR3,*+                             
      sar  ar4,*+
      SAR  AR5,*+
      sacl *+
      sach *+            ;以上为保护寄存器
      
  	  LDP #0H  
  	  mar *,ar0
  	  lacc #0h
  	  lar ar0,#0200h
  	  RPT #63
  	  SACL *+            ;将从200H开始的64个单元清0, 以存放滤波器系数
  	  LAR AR0,#03BFH
  	  RPT #63
  	  SACL *+            ;将03bfh开始的64个单元清0,  以存储输入样值
      lacc  #01h
      sacl  ONE          ;(ONE)=1
      lacc  MU 
      SACL U             ;(U)=MU
      SETC SXM           ;置符号扩展位和益处模式
      SETC OVM           
      SPM #01H
      
      LAR  AR5,#_sindata    ;存放输入波形的起始地址
      LAR  AR6,#2000H   ;存放输出波形的起始地址 
      LAR AR7,#127
      
INPUT:
	  MAR *,AR5
	  LACC *+
	  SACL D 			;读输入数据放入暂存单元
	  
	  MAR *,AR3      
      SETC CNF 			;把B0块指定为程序存储器
      MPY  #0H			;PREG=0
      LACC ONE,15  		;采用上舍入的方法减小误差
      
      LAR AR3,XN		;AR3=03FEH,新值地址
      
FIR: 
	  RPT  #63
	  MACD 0FF00H,*-    ;计算输出y(n)
	  CLRC CNF          ;B0指定为数据存储器
	  APAC				
	  SACH Y			;暂时存储滤波器的输出  因为PM=1 结果不用再左移一位   
	  
	  MAR *,AR6
	  SACH *+,AR3       ;存储滤波器的输出 2000H开始的数据区
	  
	  MAR *+	  
      LACC D
      SACL *
      SUB Y				;e(n)=d(n)-y(n)=x(n)-y(n)
      SACL ERR
      LT   ERR
      MPY  U
      PAC               ;PERG左移一位--->ACC
      ADD ONE,15        ;采用上舍入的方法减小误差(四舍五入)
      SACH ERRF			;U*e(n)
      LAR AR1,#63
      LAR AR2,#WN 		;AR2指向滤波器系数
	  LAR AR3,#XN		;AR3指向数据样值
	  LT ERRF  
	   
	  MAR *,AR3         ;有待滤波的输入数据起始地址 3bfh
	  
	  MPY *-,AR2		;U*e(n)*x(n-N+1)
ALP:
	  ZALR *,AR3
	  MPYA *-,AR2		;w(n+1)=w(n)+U*e(n)*x(n-N+1)
	  SACH *+,AR1		;保存w(n+1)
	  BANZ ALP,*-,AR2
	  MAR *,AR7	        ;重复127次
	  BANZ INPUT
	    
      
      
      
      
rtint:LDP #0H  
	  nop
	  splk #0004h,ifr 
      nop
            
      MAR  *,AR1
      mar  *-   
      lacc *-,16
      add  *- 
      
	  LAR  AR5,*- 
	  nop
      LAR  AR4,*-
	  nop
      LAR  AR3,*-
	  nop       
	  lar  ar1,*
	  nop       
	  mar  *-
	  lar  ar0,*-
	  nop
	  lst #0,*-
      nop      
      lst #1,*
      nop
     	  	  
      clrc intm
      ret
      
;	.endif
;end of file. please do not remove. it is left here to ensure that no lines of code are removed by any editor

⌨️ 快捷键说明

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