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

📄 spwm.asm

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

	.stag	.fake0,112
	.member	_coeff_ptr,0,20,8,16
	.member	_dbuffer_ptr,16,20,8,16
	.member	_order,32,4,8,16
	.member	_input,48,4,8,16
	.member	_output,64,4,8,16
	.member	_init,80,144,8,16
	.member	_calc,96,144,8,16
	.eos
	.sym	_FIRFILT_GEN,0,8,13,112,.fake0

	.stag	.fake1,448
	.member	_coeff_ptr,0,20,8,16
	.member	_dbuffer_ptr,16,20,8,16
	.member	_order,32,4,8,16
	.member	_input,48,4,8,16
	.member	_output,64,4,8,16
	.member	_dbuffer,80,52,8,160,,10
	.member	_coeff,240,52,8,176,,11
	.member	_init,416,144,8,16
	.member	_calc,432,144,8,16
	.eos
	.sym	_FIRFILT_ORD10,0,8,13,448,.fake1

	.stag	.fake2,768
	.member	_coeff_ptr,0,20,8,16
	.member	_dbuffer_ptr,16,20,8,16
	.member	_order,32,4,8,16
	.member	_input,48,4,8,16
	.member	_output,64,4,8,16
	.member	_dbuffer,80,52,8,320,,20
	.member	_coeff,400,52,8,336,,21
	.member	_init,736,144,8,16
	.member	_calc,752,144,8,16
	.eos
	.sym	_FIRFILT_ORD20,0,8,13,768,.fake2

	.stag	.fake3,128
	.member	_coeff_ptr,0,20,8,16
	.member	_brindex,16,4,8,16
	.member	_order,32,4,8,16
	.member	_dbuffer_ptr,48,20,8,16
	.member	_input,64,4,8,16
	.member	_output,80,4,8,16
	.member	_init,96,144,8,16
	.member	_calc,112,144,8,16
	.eos
	.sym	_FIRFILT_CGEN,0,8,13,128,.fake3
	.sym	_FIRFILT_GEN_handle,0,24,13,16,.fake0
	.sym	_FIRFILT_ORD10_handle,0,24,13,16,.fake1
	.sym	_FIRFILT_ORD20_handle,0,24,13,16,.fake2
	.sym	_FIRFILT_CGEN_handle,0,24,13,16,.fake3
	.sym	_FIRFILT_CORD10_handle,0,24,13,16,.fake3
	.sym	_FIRFILT_COED20_handle,0,24,13,16,.fake3
	.globl	_FIRFILT_GEN_calc
	.globl	_FIRFILT_ORD10_calc
	.globl	_FIRFILT_ORD20_calc
	.globl	_FIRFILT_CGEN_calc
	.globl	_FIRFILT_CORD10_calc
	.globl	_FIRFILT_CORD20_calc
	.globl	_FIRFILT_LIN_init
	.globl	_FIRFILT_CIR_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	"spwm.c"

	.sect	".cinit"
	.word	IS1,_lpf
	.word	0
	.word	0
	.word	10
	.word	0
	.word	0
	.word	_FIRFILT_LIN_init+0
	.word	_FIRFILT_GEN_calc+0
IS1	.set	7

	.sym	_lpf,_lpf,8,2,112,.fake0
	.globl	_lpf
	.word	IS2,_coeff
	.word	-34
	.word	-22
	.word	13
	.word	50
	.word	55
	.word	-1
	.word	-91
	.word	-137
	.word	-56
	.word	131
	.word	276
	.word	198
	.word	-127
	.word	-471
	.word	-481
	.word	0
	.word	690
	.word	976
	.word	384
	.word	-896
	.word	-1905
	.word	-1447
	.word	1040
	.word	4892
	.word	8415
	.word	9839
	.word	8415
	.word	4892
	.word	1040
	.word	-1447
	.word	-1905
	.word	-896
	.word	384
	.word	976
	.word	690
	.word	0
	.word	-481
	.word	-471
	.word	-127
	.word	198
	.word	276
	.word	131
	.word	-56
	.word	-137
	.word	-91
	.word	-1
	.word	55
	.word	50
	.word	13
	.word	-22
	.word	-34
IS2	.set	51

	.sym	_coeff,_coeff,52,2,816,,51
	.globl	_coeff
	.globl	_dbuffer
	.globl	_in_wave
	.globl	_out_wave
	.globl	_xn
	.globl	_yn
	.globl	_ini
	.text

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

	.func	25
;>>>> 	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
;>>>> 	   	lpf.dbuffer_ptr=dbuffer;
	LALK	_dbuffer+0
	LDPK	_lpf+1
	SACL	_lpf+1
	.line	6
;>>>> 		lpf.coeff_ptr=coeff;
	LALK	_coeff+0
	SACL	_lpf
	.line	7
;>>>> 		lpf.order=FIR_ORDER;
	LACK	50
	SACL	_lpf+2
	.line	8
;>>>> 		lpf.init(&lpf);
	LALK	_lpf+0
	SACL	*+
	LAC	_lpf+5
	CALA
	MAR	*-,AR2
	.line	11
;>>>> 		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	12
;>>>> 			in_wave[i] = 20000*sin((4*PI*i)/SIN_NUM) +  2000*sin((40*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	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	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	11
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* ,AR1
	SUBK	120
	BLZ	L1
L2:
	.line	14
;>>>> 		for(i=0;i<SIN_NUM;i++)
	LACK	0
	MAR	* ,AR2
	SACL	* 
	LAC	* 
	SUBK	120
	BGEZ	L4
L3:
	.line	16
;>>>> 			lpf.input=in_wave[i];
	LAC	* ,AR0
	ADLK	_in_wave+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLDD	* ,#_lpf+3,AR1
	.line	17
;>>>> 			lpf.calc(&lpf);
	LALK	_lpf+0
	SACL	*+
	LDPK	_lpf+6
	LAC	_lpf+6
	CALA
	MAR	*-,AR2
	.line	18
;>>>> 			out_wave[i]=lpf.output;
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR0
	ADLK	_out_wave+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLKD	#_lpf+4,* ,AR2
	.line	14
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	120
	BLZ	L3
L4:
L5:
	.line	20
;>>>> 	 	while(1);
	B	L5
	.endfunc	45,000000000H,2

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

	.func	49
;>>>> 	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	187,000000000H,1

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

	.sym	_dbuffer,_dbuffer,52,2,800,,50
	.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	1.25663704e2
FL2:	.float	2.e3
FL3:	.float	1.25663704e1
FL4:	.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 + -