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

📄 fir.asm

📁 C5402DSP汇编编写的FIR滤波器的实现程序
💻 ASM
字号:
	.mmregs
	
	.def  fir_init		;initialize FIR filter
	.def  fir_task		;perform FIR filtering
	
	
	
;FIR缓冲
		.data
_fir_size	.word 0x41
_fir_size1  .word 0x40
_fir_data_addr  .word 0
_fir_coff_addr  .word 0

		.sect "fir_coff"
;FIR系数表缓冲
fir_coff_table:   	;zx it must be placed in bit bound
		.word 00000H,0FFEDH
		.word 0FFE2H,0FFE7H,00000H,00024H,0003FH
		.word 00036H,00000H,0FFB1H,0FF79H,0FF8FH
		.word 00000H,0009EH,00105H,000D7H,00000H
		.word 0FEE0H,0FE2BH,0FE82H,00000H,001FCH
		.word 0033FH,002AAH,00000H,0FC4FH,0F9BAH
		.word 0FA8BH,00000H,0096DH,0143AH,01CCBH
		.word 0200EH,01CCBH,0143AH,0096DH,00000H
		.word 0FA8BH,0F9BAH,0FC4FH,00000H,002AAH
		.word 0033FH,001FCH,00000H,0FE82H,0FE2BH
		.word 0FEE0H,00000H,000D7H,00105H,0009EH
		.word 00000H,0FF8FH,0FF79H,0FFB1H,00000H
		.word 00036H,0003FH,00024H,00000H,0FFE7H
		.word 0FFE2H,0FFEDH,00000H

;FIR数据缓冲
d_data_buffer   .usect   "fir_bfr",256	;zx it must be placed in bit bound.Q15
	
	
	.text
;--------------------------------------
;初始化FIR滤波器
;--------------------------------------
fir_init:
			; 初始化滤波器状态
			STM     d_data_buffer,AR4
			RPT     #255
			ST      #0,*AR4+
FIR_coff:
			; 以_fir_data_addr保存FIR数据指针
			LD      *(_fir_size1),A
			ADD     #d_data_buffer,A
			STL     A,*(_fir_data_addr)
			; 以_fir_coff_addr保存FIR系数表指针
			ST      #fir_coff_table,*(_fir_coff_addr)
			RET
		
			
;This subroutine performs FIR filtering using MAC instruction.
;accumulator A (filter output) = h(n)*x(n-i) for i = 0,1...15
;------------------------------------------
;实现FIR滤波
;输入:以A保存输入数据
;输出: 以A保存输出数据
;------------------------------------------
fir_task:
			SSBX     OVM
			SSBX     FRCT
			NOP
			NOP
			STM      #1,AR0
			LD       *(_fir_size),B
			STLM     B,BK
			;STM     #K_FIR_BFFR,BK			;FIR circular bffr value
			;LD      *INBUF_P+,A				;load the input value
			LD       *(_fir_coff_addr),B
			NOP
			STLM     B,AR2
			NOP
			NOP
			LD       *(_fir_data_addr),B
			NOP
			STLM     B,AR3
			NOP
			NOP
			
fir_filter:
			STL      A,*AR3+%			;replace oldest sample with newest sample
			LD       #0,A
			NOP
			NOP
			RPT      *(_fir_size1)
			MAC      *AR2+0%,*AR3+0%,A  ;filtering
			NOP
			NOP
			LDM      AR2,B
			NOP
			STL      B,*(_fir_coff_addr)
			LDM      AR3,B
			NOP
			STL      B,*(_fir_data_addr)				
fir_filter_loop
			RET
		.end
			

⌨️ 快捷键说明

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