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

📄 iir.asm

📁 TIDSP2047的IIR滤波器的源程序
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.02       
*******************************************************
;	dspac -v2xx -iC:/ti/c2400/cgtools/include iir.c C:\DOCUME~1\jjd\LOCALS~1\Temp\iir.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\jjd\LOCALS~1\Temp\iir.if C:\DOCUME~1\jjd\LOCALS~1\Temp\iir.asm C:\DOCUME~1\jjd\LOCALS~1\Temp\iir.tmp 
	.port
	.bss	_xn,1,1
	.bss	_yn,1
	.bss	_iir,9
	.bss	_dbuffer,12
	.bss	_coeff,30
	.bss	_in_wave,120
	.bss	_out_wave,120
	.file	"iir.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"iirfilt.h"

	.stag	.fake0,144
	.member	_coeff_ptr,0,20,8,16
	.member	_dbuffer_ptr,16,20,8,16
	.member	_nbiq,32,4,8,16
	.member	_input,48,4,8,16
	.member	_isf,64,4,8,16
	.member	_qfmat,80,4,8,16
	.member	_output,96,4,8,16
	.member	_init,112,144,8,16
	.member	_calc,128,144,8,16
	.eos
	.sym	_IIR5BIQ16,0,8,13,144,.fake0

	.stag	.fake1,144
	.member	_coeff_ptr,0,20,8,16
	.member	_dbuffer_ptr,16,20,8,16
	.member	_nbiq,32,4,8,16
	.member	_input,48,4,8,16
	.member	_isf,64,4,8,16
	.member	_qfmat,80,4,8,16
	.member	_output,96,4,8,16
	.member	_init,112,144,8,16
	.member	_calc,128,144,8,16
	.eos
	.sym	_IIR5BIQ32,0,8,13,144,.fake1
	.sym	_IIR5BIQ16_handle,0,24,13,16,.fake0
	.sym	_IIR5BIQ32_handle,0,24,13,16,.fake1
	.globl	_IIR5BIQ16_calc
	.globl	_IIR5BIQ32_calc
	.globl	_IIR5BIQ16_init
	.globl	_IIR5BIQ32_init
	.file	"C:/ti/c2400/cgtools/include\math.h"
	.globl	_asin
	.globl	_acos
	.globl	_atan
	.globl	_atan2
	.globl	_ceil
	.globl	_cos
	.globl	_cosh
	.globl	_exp
	.globl	_fabs
	.globl	_floor
	.globl	_fmod
	.globl	_frexp
	.globl	_ldexp
	.globl	_log
	.globl	_log10
	.globl	_modf
	.globl	_pow
	.globl	_sin
	.globl	_sinh
	.globl	_sqrt
	.globl	_tan
	.globl	_tanh
	.file	"iir.c"

	.sect	".cinit"
	.word	IS1,_iir
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	_IIR5BIQ16_init+0
	.word	_IIR5BIQ16_calc+0
IS1	.set	9

	.sym	_iir,_iir,8,2,144,.fake0
	.globl	_iir
	.globl	_dbuffer
	.word	IS2,_coeff
	.word	-746
	.word	4846
	.word	1056
	.word	2111
	.word	1056
	.word	-1032
	.word	5001
	.word	1120
	.word	2239
	.word	1120
	.word	-1639
	.word	5330
	.word	1192
	.word	2385
	.word	1192
	.word	-2647
	.word	5877
	.word	1211
	.word	2422
	.word	1211
	.word	-4206
	.word	6722
	.word	872
	.word	1745
	.word	872
	.word	-6573
	.word	8005
	.word	4861
	.word	9722
	.word	4861
IS2	.set	30

	.sym	_coeff,_coeff,52,2,480,,30
	.globl	_coeff
	.globl	_in_wave
	.globl	_out_wave
	.globl	_xn
	.globl	_yn
	.globl	_ini
	.text

	.sym	_main,_main,32,2,0
	.globl	_main

	.func	27
;>>>> 	void main(void)
;>>>> 	   	int i;
******************************************************
* FUNCTION DEF : _main
******************************************************
_main:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_i,1,4,1,16
	.line	4
;>>>> 	   	ini();
	CALL	_ini
	.line	5
;>>>> 	   	iir.dbuffer_ptr=dbuffer; /* Object Initialization */
	LALK	_dbuffer+0
	LDPK	_iir+1
	SACL	_iir+1
	.line	6
;>>>> 		iir.coeff_ptr=coeff;
	LALK	_coeff+0
	SACL	_iir
	.line	7
;>>>> 		iir.qfmat=IIR_LPF_QFMAT;
	LACK	13
	SACL	_iir+5
	.line	8
;>>>> 		iir.nbiq=IIR_LPF_NBIQ;
	LACK	6
	SACL	_iir+2
	.line	9
;>>>> 		iir.isf=IIR_LPF_ISF;
	SPLK	#4092,_iir+4
	.line	10
;>>>> 		iir.init(&iir);
	LALK	_iir+0
	SACL	*+
	LAC	_iir+7
	CALA
	MAR	*-,AR2
	.line	13
;>>>> 		for(i=0;i<SIN_NUM;i++)
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	SSXM
	LAC	* 
	SUBK	120
	BGEZ	L2
	MAR	* ,AR1
L1:
	.line	14
;>>>> 			in_wave[i] = 20000*sin((4*PI*i)/SIN_NUM) +  6000*sin((60*PI*i)/SIN_NUM) + 6000*sin((80*PI*i)/SIN_NUM);;
	LALK	FL0
	RPTK	1
	TBLR	*+
	MAR	* ,AR2
	LAC	* ,AR1
	CALL	F$$ITOF
	LALK	FL1
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	CALL	F$$DIV
	CALL	_sin
	SBRK	2
	SACL	*+
	SACH	*+
	LALK	FL2
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	LALK	FL0
	RPTK	1
	TBLR	*+
	SSXM
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR1
	CALL	F$$ITOF
	LALK	FL3
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	CALL	F$$DIV
	CALL	_sin
	SBRK	2
	SACL	*+
	SACH	*+
	LALK	FL2
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	LALK	FL0
	RPTK	1
	TBLR	*+
	SSXM
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR1
	CALL	F$$ITOF
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	CALL	F$$DIV
	CALL	_sin
	SBRK	2
	SACL	*+
	SACH	*+
	LALK	FL5
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$ADD
	CALL	F$$FTOI
	SACL	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR0
	ADLK	_in_wave+0,0
	SACL	* 
	LAR	AR3,* ,AR1
	SSXM
	LAC	* ,AR3
	SACL	* ,AR2
	.line	13
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* ,AR1
	SUBK	120
	BLZ	L1
L2:
	.line	16
;>>>> 		for(i=0;i<SIN_NUM;i++)
	LACK	0
	MAR	* ,AR2
	SACL	* 
	LAC	* 
	SUBK	120
	BGEZ	L4
L3:
	.line	18
;>>>> 			iir.input=in_wave[i];
	LAC	* ,AR0
	ADLK	_in_wave+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLDD	* ,#_iir+3,AR1
	.line	19
;>>>> 			iir.calc(&iir); 
	LALK	_iir+0
	SACL	*+
	LDPK	_iir+8
	LAC	_iir+8
	CALA
	MAR	*-,AR2
	.line	20
;>>>> 			out_wave[i]=iir.output;
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR0
	ADLK	_out_wave+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLKD	#_iir+6,* ,AR2
	.line	16
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	120
	BLZ	L3
L4:
L5:
	.line	23
;>>>> 	 	while(1);
	B	L5
	.endfunc	50,000000000H,2

	.sym	_ini,_ini,32,2,0
	.globl	_ini

	.func	54
;>>>> 	void ini(void)
******************************************************
* FUNCTION DEF : _ini
******************************************************
_ini:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	5
;>>>> 	    *SCSR1 = 0x00FD;
	LARK	AR3,28696
	LACK	253
	SACL	*+
	.line	22
;>>>> 	    *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
	LACK	11
	OR	* 
	ANDK	15
	SACL	* 
	.line	34
;>>>> 	    *WDCR  = 0x00E8;
	LACK	232
	ADRK	16
	SACL	* ,AR0
	.line	45
;>>>> 	    WSGR = 0x0000;
	LACK	0
	SACL	* 
	OUT	* ,0ffffh,AR3
	.line	56
;>>>> 	    *MCRA = 0x0fc0;                     /* group A pins */
	ADRK	103
	SPLK	#4032,* 
	.line	76
;>>>> 	    *MCRB = 0xFE00;                     /* group B pins */
	ADRK	2
	SPLK	#65024,* 
	.line	96
;>>>> 	    *MCRC = 0x0000;                     /* group C pins */
	ADRK	2
	SACL	* ,AR4
	.line	120
;>>>> 	    *IMR = 0x0000;                      /* clear the IMR register */
	LARK	AR4,4
	SACL	* 
	.line	121
;>>>> 	    *IFR = 0x003F;                      /* clear any pending core interrupts */
	LACK	63
	ADRK	2
	SACL	* 
	.line	122
;>>>> 	    *IMR = 0x0004;                      /* enable desired core interrupts (in1,in3)*/
	LACK	4
	SBRK	2
	SACL	* ,AR5
	.line	125
;>>>> 	    *EVAIFRA = 0xFFFF;                  /* clear all EVA group A interrupts */
	LARK	AR5,29743
	SPLK	#65535,*+
	.line	126
;>>>> 	    *EVAIFRB = 0xFFFF;                  /* clear all EVA group B interrupts */
	SPLK	#65535,*+
	.line	127
;>>>> 	    *EVAIFRC = 0xFFFF;                  /* clear all EVA group C interrupts */
	SPLK	#65535,* ,AR4
	.line	128
;>>>> 	    *EVAIMRA = 0x0000;                  /* enable desired EVA group A interrupts */
	SBRK	4
	MAR	* ,AR5
	SBRK	5
	SAR	AR4,*+,AR4
	.line	129
;>>>> 	    *EVAIMRB = 0x0001;                  /* enable desired EVA group B interrupts ENABLE TIME2*/
	MAR	*+,AR5
	SAR	AR4,*+,AR4
	.line	130
;>>>> 	    *EVAIMRC = 0x0000;                  /* enable desired EVA group C interrupts */
	MAR	*-,AR5
	SAR	AR4,* 
	.line	132
;>>>> 	    *EVBIFRA = 0xFFFF;                  /* clear all EVB group A interrupts */
	LARK	AR5,29999
	SPLK	#65535,*+
	.line	133
;>>>> 	    *EVBIFRB = 0xFFFF;                  /* clear all EVB group B interrupts */
	SPLK	#65535,*+
	.line	134
;>>>> 	    *EVBIFRC = 0xFFFF;                  /* clear all EVB group C interrupts */
	SPLK	#65535,* 
	.line	135
;>>>> 	    *EVBIMRA = 0x0000;                  /* enable desired EVB group A interrupts */
	SBRK	5
	SAR	AR4,*+
	.line	136
;>>>> 	    *EVBIMRB = 0x0000;                  /* enable desired EVB group B interrupts */
	SAR	AR4,*+
	.line	137
;>>>> 	    *EVBIMRC = 0x0000;                  /* enable desired EVB group C interrupts */
	SAR	AR4,* ,AR1
EPI0_2:
	.line	139
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	192,000000000H,1

	.sym	_out_wave,_out_wave,52,2,1920,,120
	.globl	_out_wave

	.sym	_dbuffer,_dbuffer,52,2,192,,12
	.globl	_dbuffer

	.sym	_in_wave,_in_wave,52,2,1920,,120
	.globl	_in_wave

	.sym	_xn,_xn,4,2,16
	.globl	_xn

	.sym	_yn,_yn,4,2,16
	.globl	_yn
*************************************************
* DEFINE FLOATING POINT CONSTANTS               *
*************************************************
	.text
FL0:	.float	1.2e2
FL1:	.float	2.5132740799999999e2
FL2:	.float	6.e3
FL3:	.float	1.8849555599999999e2
FL4:	.float	1.25663704e1
FL5:	.float	2.e4
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	F$$ITOF
	.global	F$$MUL
	.global	F$$DIV
	.global	F$$ADD
	.global	F$$FTOI
	.end

⌨️ 快捷键说明

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