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

📄 func.asm

📁 交流电机调速程序
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.02       
*******************************************************
;	dspac -v2xx -iC:/ti/c2400/cgtools/include func.c C:\DOCUME~1\jjd\LOCALS~1\Temp\func.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\jjd\LOCALS~1\Temp\func.if C:\DOCUME~1\jjd\LOCALS~1\Temp\func.asm C:\DOCUME~1\jjd\LOCALS~1\Temp\func.tmp 
	.port
	.bss	_pwm_half_per,1,1
	.bss	_timer2_per,1
	.bss	_num_f_d,1
	.bss	_i,1
	.bss	_adc_res,1
	.bss	_a,1
	.bss	_index_pwm,1
	.bss	_b,1
	.bss	_c,1
	.bss	_aaa,1
	.bss	_period,1
	.bss	_duty,1
	.bss	_fv_cn,2,1
	.bss	_F_V_radio,2,1
	.bss	_b_time,2,1
	.bss	_I_result,2048
	.file	"func.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.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	"var.h"

	.sect	".cinit"
	.word	1,_num_f_d
	.word	33

	.sym	_num_f_d,_num_f_d,14,2,16
	.globl	_num_f_d
	.word	2,_b_time
	.float	3.e-1

	.sym	_b_time,_b_time,6,2,32
	.globl	_b_time
	.word	1,_pwm_half_per
	.word	2000

	.sym	_pwm_half_per,_pwm_half_per,14,2,16
	.globl	_pwm_half_per
	.word	1,_timer2_per
	.word	1000

	.sym	_timer2_per,_timer2_per,14,2,16
	.globl	_timer2_per
	.word	2,_F_V_radio
	.float	1.2

	.sym	_F_V_radio,_F_V_radio,6,2,32
	.globl	_F_V_radio
	.file	"func.c"
	.globl	_period
	.globl	_duty
	.word	1,_index_pwm
	.word	0

	.sym	_index_pwm,_index_pwm,14,2,16
	.globl	_index_pwm
	.globl	_a
	.globl	_b
	.globl	_c
	.word	1,_aaa
	.word	0

	.sym	_aaa,_aaa,14,2,16
	.globl	_aaa
	.globl	_sin_table
	.word	1,_adc_res
	.word	500

	.sym	_adc_res,_adc_res,14,2,16
	.globl	_adc_res
	.globl	_I_result
	.word	1,_i
	.word	0

	.sym	_i,_i,14,2,16
	.globl	_i
	.word	2,_fv_cn
	.float	0.

	.sym	_fv_cn,_fv_cn,6,2,32
	.globl	_fv_cn
	.text

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

	.func	23
;>>>> 	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 = 0x0040;
	LACK	64
	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 */
	LACK	0
	ADRK	2
	SACL	* 
	.line	118
;>>>> 	    *PFDATDIR = *PFDATDIR | 0x2000;
	LACK	8192
	ADRK	2
	OR	* 
	SACL	* ,AR4
	.line	122
;>>>> 	    *T1CON = 0x0000;                    /* disable timer 1 */
	LARK	AR4,29700
	LACK	0
	SACL	* 
	.line	123
;>>>> 	    *T2CON = 0x0000;                    /* disable timer 2 */
	ADRK	4
	SACL	* 
	.line	125
;>>>> 	    *GPTCONA = 0x0080;                  /* configure GPTCONA */
	LACK	128
	SBRK	8
	SACL	*+
	.line	142
;>>>> 	    *T1CNT = 0x0000;                    /* clear timer counter */
	LACK	0
	SACL	* 
	.line	143
;>>>> 	    *T1PR = pwm_half_per;               /* set timer period */
	ADRK	2
	BLKD	#_pwm_half_per,* 
	.line	144
;>>>> 	    *DBTCONA = 0x0000;                  /* deadband units off */
	ADRK	18
	SACL	* 
	.line	146
;>>>> 	    *ACTRA = 0x0666;                    /* PWM1 pin set active high */     
	SBRK	2
	SPLK	#1638,* 
	.line	158
;>>>> 	     *COMCONA = 0x8200;                 /* configure COMCON register */
	SBRK	2
	SPLK	#33280,* 
	.line	169
;>>>> 	     *T1CON = 0x0840;                   /* configure T1CON register */
	SBRK	13
	SPLK	#2112,*+
	.line	185
;>>>> 	    *T2CNT = 0x0000;                    /* clear timer counter */
	SACL	* 
	.line	186
;>>>> 	    *T2PR = timer2_per;                 /* set timer period */
	ADRK	2
	BLKD	#_timer2_per,*+
	.line	188
;>>>> 	    *T2CON = 0xD740;                    /* configure T2CON register */
	SPLK	#55104,* ,AR1
	.line	202
;>>>> 		fv_cn = (312500.0/(num_f_d*U_DC*F_V_radio));
	RPTK	1
	BLKD	_F_V_radio+0,*+
	LDPK	_num_f_d
	LT	_num_f_d
	MAR	* ,AR0
	LACK	24
	SACL	*
	MPYU	*
	SPL	* 
	ZALS	* ,AR1
	CALL	F$$UTOF
	CALL	F$$MUL
	LALK	FL0
	RPTK	1
	TBLR	*+
	CALL	F$$DIV
	MAR	*-
	ZALH	*-
	ADDS	* ,AR5
	SACL	_fv_cn
	SACH	_fv_cn+1
	.line	206
;>>>> 	    *IMR = 0x0000;                      /* clear the IMR register */
	LARK	AR5,4
	LACK	0
	SACL	* 
	.line	207
;>>>> 	    *IFR = 0x003F;                      /* clear any pending core interrupts */
	LACK	63
	ADRK	2
	SACL	* 
	.line	208
;>>>> 	    *IMR = 0x0004;                      /* enable desired core interrupts (in1,in3)*/
	LACK	4
	SBRK	2
	SACL	* ,AR4
	.line	211
;>>>> 	    *EVAIFRA = 0xFFFF;                  /* clear all EVA group A interrupts */
	ADRK	39
	SPLK	#65535,*+
	.line	212
;>>>> 	    *EVAIFRB = 0xFFFF;                  /* clear all EVA group B interrupts */
	SPLK	#65535,*+
	.line	213
;>>>> 	    *EVAIFRC = 0xFFFF;                  /* clear all EVA group C interrupts */
	SPLK	#65535,* ,AR5
	.line	214
;>>>> 	    *EVAIMRA = 0x0000;                  /* enable desired EVA group A interrupts */
	SBRK	4
	MAR	* ,AR4
	SBRK	5
	SAR	AR5,*+,AR5
	.line	215
;>>>> 	    *EVAIMRB = 0x0001;                  /* enable desired EVA group B interrupts ENABLE TIME2*/
	MAR	*+,AR4
	SAR	AR5,*+,AR5
	.line	216
;>>>> 	    *EVAIMRC = 0x0000;                  /* enable desired EVA group C interrupts */
	MAR	*-,AR4
	SAR	AR5,* ,AR5
	.line	218
;>>>> 	    *EVBIFRA = 0xFFFF;                  /* clear all EVB group A interrupts */
	LARK	AR5,29999
	SPLK	#65535,*+
	.line	219
;>>>> 	    *EVBIFRB = 0xFFFF;                  /* clear all EVB group B interrupts */
	SPLK	#65535,*+
	.line	220
;>>>> 	    *EVBIFRC = 0xFFFF;                  /* clear all EVB group C interrupts */
	SPLK	#65535,* ,AR4
	.line	221
;>>>> 	    *EVBIMRA = 0x0000;                  /* enable desired EVB group A interrupts */
	LACK	0
	ADRK	254
	SACL	*+
	.line	222
;>>>> 	    *EVBIMRB = 0x0000;                  /* enable desired EVB group B interrupts */
	SACL	*+
	.line	223
;>>>> 	    *EVBIMRC = 0x0000;                  /* enable desired EVB group C interrupts */
	SACL	* ,AR1
EPI0_1:
	.line	225
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	247,000000000H,1

	.sym	_init_adc,_init_adc,32,2,0
	.globl	_init_adc

	.func	250
;>>>> 	void init_adc(void)
******************************************************
* FUNCTION DEF : _init_adc
******************************************************
_init_adc:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		*ADCTRL1=0x00;
	LARK	AR3,28832
	LACK	0
	SACL	*+
	.line	4
;>>>> 		*ADCTRL2=0x0504;
	SPLK	#1284,*+
	.line	5
;>>>> 		*MAX_CONV=0x07;
	LACK	7
	SACL	*+
	.line	6
;>>>> 		*CHSELSEQ1=0x3210;
	SPLK	#12816,*+
	.line	7
;>>>> 		*CHSELSEQ2=0x7654;
	SPLK	#30292,* ,AR1
EPI0_2:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	257,000000000H,1

	.sym	_adc_soc,_adc_soc,32,2,0
	.globl	_adc_soc

	.func	259
;>>>> 	void adc_soc(void)
******************************************************
* FUNCTION DEF : _adc_soc
******************************************************
_adc_soc:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		*T4CON=*T4CON|0x40;
	LARK	AR3,29960
	LACK	64
	OR	* 
	SACL	* ,AR1
EPI0_3:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	262,000000000H,1

	.sym	_adcint,_adcint,32,2,0
	.globl	_adcint

	.func	264
;>>>> 	void interrupt adcint(void)
******************************************************
* FUNCTION DEF : _adcint
******************************************************
_adcint:
	CALL	I$$SAVE
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		asm("	clrc SXM");
	clrc SXM
	.line	9
;>>>> 		if(!(i%I_DIV))
	.line	11
;>>>> 			adc_res=*RESULT5>>6; 
	LARK	AR3,28845
	RSXM
	MAR	* ,AR3
	LAC	* ,9
	LDPK	_adc_res
	SACH	_adc_res,1
	.line	12
;>>>> 			I_result[i/I_DIV]=*RESULT0>>6;
	SBRK	5
	LAC	* ,9,AR1
	SACH	* ,1,AR0
	LAC	_i
	ADLK	_I_result+0,0
	SACL	* 
	LAR	AR4,* ,AR1
	LAC	* ,AR4
	SACL	* 
	.line	13
;>>>> 			if(adc_res>0x3fe)adc_res=0x3fe;
	ZALS	_adc_res
	SUBK	1022
	BLEZ	L2
	SPLK	#1022,_adc_res
L2:
	.line	14
;>>>> 			if(adc_res<0x01)adc_res=0x01;
	LAC	_adc_res
	BNZ	L3
	LACK	1
	SACL	_adc_res
L3:
	.line	15
;>>>> 			*ADCTRL2|=0x4200;
	MAR	* ,AR3
	SBRK	7
	LACK	16896
	OR	* 
	SACL	* ,AR1
	.line	16
;>>>> 			*T2PR=1.76*adc_res+200;
	LALK	FL1
	RPTK	1
	TBLR	*+
	ZALS	_adc_res
	CALL	F$$UTOF
	LALK	FL2
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	CALL	F$$ADD
	CALL	F$$FTOU
	LARK	AR4,29703
	MAR	* ,AR4
	SACL	* 
	.line	17
;>>>> 			b_time=fv_cn/((float)*T2PR);
	ZALS	* ,AR1
	CALL	F$$UTOF
	RPTK	1
	BLKD	_fv_cn+0,*+
	CALL	F$$DIV
	MAR	*-
	ZALH	*-
	ADDS	* 
	SACL	_b_time
	SACH	_b_time+1
	.line	18
;>>>> 			if(b_time>1)b_time=1;
	LALK	FL3
	RPTK	1
	TBLR	*+
	RPTK	1
	BLKD	_b_time+0,*+
	CALL	F$$GT
	BZ	L4
	LALK	FL3
	LRLK	AR5,_b_time+0
	MAR	* ,AR5
	RPTK	1
	TBLR	*+
L4:
	.line	21
;>>>> 		i++;
	LDPK	_i
	LAC	_i
	ADDK	1
	SACL	_i
	.line	22
;>>>> 		if(i>=I_LOOP)
	ZALS	_i
	SUBK	2048
	BLZ	L5
	.line	23
;>>>> 			i = 0;
	LACK	0
	SACL	_i
L5:
	.line	24
;>>>> 		asm(" CLRC INTM");
 CLRC INTM
EPI0_4:
	.line	25
	MAR	* ,AR1
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	288,000000000H,1

	.sym	_timer2_isr,_timer2_isr,32,2,0
	.globl	_timer2_isr

	.func	292
;>>>> 	interrupt void timer2_isr(void)
******************************************************
* FUNCTION DEF : _timer2_isr
******************************************************
_timer2_isr:
	CALL	I$$SAVE
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	4
;>>>> 	     *EVAIFRB = *EVAIFRB & 0x0001;      /* clear T2PINT flag */ 
	LARK	AR3,29744
	LACK	1
	AND	* 
	SACL	* ,AR1
	.line	5
;>>>> 	     a=*CMPR1=b_time*pwm_half_per*(0.5+0.5*sin_table[index_pwm%num_f_d]);
	BLKD	_num_f_d+0,*+
	LDPK	_index_pwm
	ZALS	_index_pwm
	CALL	I$$UMOD
	MAR	* ,AR0
	SACL	* 
	LAC	* ,1
	ADLK	_sin_table+0,0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	*+,AR1
	SACL	*+,AR4
	LAC	*-,AR1
	SACL	*+
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$ADD
	ZALS	_pwm_half_per
	CALL	F$$UTOF
	RPTK	1
	BLKD	_b_time+0,*+
	CALL	F$$MUL
	CALL	F$$MUL
	CALL	F$$FTOU
	MAR	* ,AR3
	SBRK	25
	SACL	*+,AR1
	SACL	_a
	.line	6
;>>>> 		 b=*CMPR2=b_time*pwm_half_per*(0.5+0.5*sin_table[(index_pwm+((2*num_f_d)/3))%num_f_d]);
	BLKD	_num_f_d+0,*+
	LACK	3
	SACL	*+,AR0
	LT	_num_f_d
	LACK	2
	SACL	*
	MPYU	*
	SPL	* 
	ZALS	* ,AR1
	CALL	I$$UDIV
	ADDS	_index_pwm
	ANDK	0FFFFh
	CALL	I$$UMOD
	MAR	* ,AR0
	SACL	* 
	LAC	* ,1
	ADLK	_sin_table+0,0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	*+,AR1
	SACL	*+,AR4
	LAC	*-,AR1
	SACL	*+
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$ADD
	ZALS	_pwm_half_per
	CALL	F$$UTOF
	RPTK	1
	BLKD	_b_time+0,*+
	CALL	F$$MUL
	CALL	F$$MUL
	CALL	F$$FTOU
	MAR	* ,AR3
	SACL	*+,AR1
	SACL	_b
	.line	7
;>>>> 		 c=*CMPR3=b_time*pwm_half_per*(0.5+0.5*sin_table[(index_pwm+((num_f_d)/3))%num_f_d]);
	BLKD	_num_f_d+0,*+
	LACK	3
	SACL	*+
	ZALS	_num_f_d
	CALL	I$$UDIV
	ADDS	_index_pwm
	ANDK	0FFFFh
	CALL	I$$UMOD
	MAR	* ,AR0
	SACL	* 
	LAC	* ,1
	ADLK	_sin_table+0,0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	*+,AR1
	SACL	*+,AR4
	LAC	*-,AR1
	SACL	*+
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$MUL
	LALK	FL4
	RPTK	1
	TBLR	*+
	CALL	F$$ADD
	ZALS	_pwm_half_per
	CALL	F$$UTOF
	RPTK	1
	BLKD	_b_time+0,*+
	CALL	F$$MUL
	CALL	F$$MUL
	CALL	F$$FTOU
	MAR	* ,AR3
	SACL	* 
	SACL	_c
	.line	13
;>>>> 	     index_pwm++;
	LAC	_index_pwm
	ADDK	1
	SACL	_index_pwm
	.line	14
;>>>> 		if(index_pwm>=num_f_d)index_pwm=0;
	ZALS	_index_pwm
	SUBS	_num_f_d
	BLZ	L6
	LACK	0
	SACL	_index_pwm
L6:
EPI0_5:
	.line	16
	MAR	* ,AR1
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	307,000000000H,1

	.sym	_I_result,_I_result,62,2,32768,,2048
	.globl	_I_result

	.sym	_a,_a,14,2,16
	.globl	_a

	.sym	_b,_b,14,2,16
	.globl	_b

	.sym	_c,_c,14,2,16
	.globl	_c

	.sym	_duty,_duty,14,2,16
	.globl	_duty

	.sym	_period,_period,14,2,16
	.globl	_period
*************************************************
* DEFINE FLOATING POINT CONSTANTS               *
*************************************************
	.text
FL0:	.float	3.125e5
FL1:	.float	2.e2
FL2:	.float	1.76
FL3:	.float	1.
FL4:	.float	5.e-1
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	F$$UTOF
	.global	F$$MUL
	.global	F$$DIV
	.global	F$$ADD
	.global	F$$FTOU
	.global	F$$GT
	.global	I$$SAVE
	.global	I$$REST
	.global	I$$UMOD
	.global	I$$UDIV
	.end

⌨️ 快捷键说明

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