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

📄 func.asm

📁 一个在mck2407板上控制无刷电机恒速运行的程序
💻 ASM
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00       
*******************************************************
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPAC.EXE -v2xx func.c C:\WINDOWS\TEMP\func.if 
;	dspopt NOT RUN
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPCG.EXE -o -v2xx -o C:\WINDOWS\TEMP\func.if C:\WINDOWS\TEMP\func.asm C:\WINDOWS\TEMP\func.tmp 
	.port
	.bss	_hall,1,1
	.bss	_time_cnt,1
	.bss	_dir,1
	.bss	_ldd,1
	.bss	_PWM_DUTY,1
	.bss	_i,1
	.bss	_adc_res,1
	.file	"func.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"var.h"
	.globl	_i

	.sect	".cinit"
	.word	1,_hall
	.word	0

	.sym	_hall,_hall,14,2,16
	.globl	_hall
	.word	1,_time_cnt
	.word	20

	.sym	_time_cnt,_time_cnt,14,2,16
	.globl	_time_cnt
	.file	"C:\tic2xx\c2000\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	"func.c"
	.globl	_adc_res
	.word	1,_dir
	.word	0

	.sym	_dir,_dir,14,2,16
	.globl	_dir
	.word	1,_ldd
	.word	0

	.sym	_ldd,_ldd,14,2,16
	.globl	_ldd
	.word	1,_PWM_DUTY
	.word	1500

	.sym	_PWM_DUTY,_PWM_DUTY,14,2,16
	.globl	_PWM_DUTY
	.text

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

	.func	17
;>>>> 	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
;>>>> 	    *PADATDIR = *PADATDIR&0xc7ff;
	LACK	51199
	ADRK	4
	AND	* 
	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 = 0x0000;                  /* configure GPTCONA */
	SBRK	8
	SACL	*+
	.line	142
;>>>> 	    *T1CNT = 0x0000;                    /* clear timer counter */
	SACL	* 
	.line	143
;>>>> 	    *T1PR = pwm_half_per;               /* set timer period */
	ADRK	2
	SPLK	#2000,* 
	.line	144
;>>>> 	    *DBTCONA = 0x0000;                  /* deadband units off */
	ADRK	18
	SACL	* 
	.line	145
;>>>> 	    *CMPR3=*CMPR2=*CMPR1=PWM_DUTY;                  /* set PWM1 duty cycle */ 
	LDPK	_PWM_DUTY
	LAC	_PWM_DUTY
	ADRK	2
	SACL	*+
	SACL	*+
	SACL	* 
	.line	147
;>>>> 	    *ACTRA = 0x0fff;                    /* PWM1 pin set active high */     
	SBRK	6
	SPLK	#4095,* 
	.line	159
;>>>> 	     *COMCONA = 0x8200;                 /* configure COMCON register */
	SBRK	2
	SPLK	#33280,* 
	.line	170
;>>>> 	     *T1CON = 0x0840;                   /* configure T1CON register */
	SBRK	13
	SPLK	#2112,*+
	.line	186
;>>>> 	    *T2CNT = 0x0000;                    /* clear timer counter */
	LACK	0
	SACL	* 
	.line	187
;>>>> 	    *T2PR = timer2_per;                 /* set timer period */
	ADRK	2
	SPLK	#5000,*+
	.line	189
;>>>> 	    *T2CON = 0xD740;                    /* configure T2CON register */
	SPLK	#55104,* ,AR5
	.line	205
;>>>> 	    *IMR = 0x0000;                      /* clear the IMR register */
	LARK	AR5,4
	SACL	* 
	.line	206
;>>>> 	    *IFR = 0x003F;                      /* clear any pending core interrupts */
	LACK	63
	ADRK	2
	SACL	* 
	.line	207
;>>>> 	    *IMR = 0x0007;                      /* enable desired core interrupts (in2,in3)*/
	LACK	7
	SBRK	2
	SACL	* ,AR4
	.line	210
;>>>> 	    *EVAIFRA = 0xFFFF;                  /* clear all EVA group A interrupts */
	ADRK	39
	SPLK	#65535,*+
	.line	211
;>>>> 	    *EVAIFRB = 0xFFFF;                  /* clear all EVA group B interrupts */
	SPLK	#65535,*+
	.line	212
;>>>> 	    *EVAIFRC = 0xFFFF;                  /* clear all EVA group C interrupts */
	SPLK	#65535,* 
	.line	213
;>>>> 	    *EVAIMRA = 0x0200;                  /* enable desired EVA group A interrupts */
	SBRK	5
	SPLK	#512,* ,AR5
	.line	214
;>>>> 	    *EVAIMRB = 0x0001;                  /* enable desired EVA group B interrupts ENABLE TIME2*/
	SBRK	3
	MAR	* ,AR4
	MAR	*+
	SAR	AR5,*+,AR5
	.line	215
;>>>> 	    *EVAIMRC = 0x0000;                  /* enable desired EVA group C interrupts */
	MAR	*-,AR4
	SAR	AR5,* ,AR5
	.line	217
;>>>> 	    *EVBIFRA = 0xFFFF;                  /* clear all EVB group A interrupts */
	LARK	AR5,29999
	SPLK	#65535,*+
	.line	218
;>>>> 	    *EVBIFRB = 0xFFFF;                  /* clear all EVB group B interrupts */
	SPLK	#65535,*+
	.line	219
;>>>> 	    *EVBIFRC = 0xFFFF;                  /* clear all EVB group C interrupts */
	SPLK	#65535,* ,AR4
	.line	220
;>>>> 	    *EVBIMRA = 0x0000;                  /* enable desired EVB group A interrupts */
	LACK	0
	ADRK	254
	SACL	*+
	.line	221
;>>>> 	    *EVBIMRB = 0x0000;                  /* enable desired EVB group B interrupts */
	SACL	*+
	.line	222
;>>>> 	    *EVBIMRC = 0x0000;                  /* enable desired EVB group C interrupts */
	SACL	* ,AR1
EPI0_1:
	.line	224
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	240,000000000H,1

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

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

	.line	3
;>>>> 		*T4CNT=0x0000l;
	LARK	AR3,29957
	LACK	0
	SACL	* 
	.line	4
;>>>> 		*T4CON=0x170c;
	ADRK	3
	SPLK	#5900,*-
	.line	5
;>>>> 		*T4PR=0x75;
	LACK	117
	SACL	* 
	.line	6
;>>>> 		*GPTCONB=0x400;
	SBRK	7
	SPLK	#1024,* 
	.line	7
;>>>> 		*EVBIFRB=0xffff;
	ADRK	48
	SPLK	#65535,* ,AR4
	.line	8
;>>>> 		*ADCTRL1=0x10;
	LARK	AR4,28832
	LACK	16
	SACL	*+
	.line	9
;>>>> 		*ADCTRL2=0x8404;
	SPLK	#33796,*+
	.line	10
;>>>> 		*MAX_CONV=0x03;
	LACK	3
	SACL	*+
	.line	11
;>>>> 		*CHSELSEQ1=0x3210;
	SPLK	#12816,* ,AR1
EPI0_2:
	.line	12
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	253,000000000H,1

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

	.func	255
;>>>> 	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	258,000000000H,1

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

	.func	260
;>>>> 	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	4
;>>>> 		adc_res=*RESULT2>>6;
	LARK	AR3,28842
	RSXM
	MAR	* ,AR3
	LAC	* ,9
	LDPK	_adc_res
	SACH	_adc_res,1
	.line	5
;>>>> 		if(adc_res>0x2cf)adc_res=0x2cf;
	ZALS	_adc_res
	SUBK	719
	BLEZ	L1
	SPLK	#719,_adc_res
L1:
	.line	6
;>>>> 		if(adc_res<0x38)adc_res=0x38;
	ZALS	_adc_res
	SUBK	56
	BGEZ	L2
	LACK	56
	SACL	_adc_res
L2:
	.line	7
;>>>> 		*ADCTRL2|=0x4200;
	SBRK	9
	LACK	16896
	OR	* 
	SACL	* 
	.line	8
;>>>> 		PWM_DUTY=1200+(adc_res-0x38);
	LAC	_adc_res
	ADDK	1144
	SACL	_PWM_DUTY
	.line	9
;>>>> 		if(PWM_DUTY<1200)PWM_DUTY=1200;
	ZALS	_PWM_DUTY
	SUBK	1200
	BGEZ	L3
	SPLK	#1200,_PWM_DUTY
L3:
	.line	10
;>>>> 		if(PWM_DUTY>1800)PWM_DUTY=1800;
	ZALS	_PWM_DUTY
	SUBK	1800
	BLEZ	L4
	SPLK	#1800,_PWM_DUTY
L4:
	.line	11
;>>>> 		asm(" CLRC INTM");
 CLRC INTM
EPI0_4:
	.line	12
	MAR	* ,AR1
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	271,000000000H,1

	.sym	_stop,_stop,32,2,0
	.globl	_stop

	.func	273
;>>>> 	void stop(void)
;>>>> 		unsigned int i,j;
******************************************************
* FUNCTION DEF : _stop
******************************************************
_stop:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR3

	.sym	_i,1,14,1,16
	.sym	_j,2,14,1,16
	.line	4
;>>>> 		*ACTRA=0x0333;
	LARK	AR3,29715
	SPLK	#819,* ,AR2
	.line	5
;>>>> 		for(i=0;i<10;i++)
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	10
	BGEZ	L6
	MAR	*+
	RSXM ;;;
L5:
	.line	6
;>>>> 		for(j=0;j<40000;j++);
	LACK	0
	SACL	* 
	ZALS	* 
	BNV	$+2
	MAR	*+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	40000
	SPAC
	BNV	$+6
	BGZ	L8
	B	$+4
	BLEZ	L8
	SBRK	2
L7:
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	BNV	$+2
	MAR	*+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	40000
	SPAC
	SBRK	2
	BNV	$+6
	BLZ	L7
	B	$+4
	BGZ	L7
L8:
	.line	5
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	10
	BLZ	L5
L6:
EPI0_5:
	.line	7
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	279,000000000H,5

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

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

	.line	3
;>>>> 	     asm(" SETC INTM");
 SETC INTM
	.line	5
;>>>> 	     *EVAIFRB = *EVAIFRB & 0x0001;      /* clear T2PINT flag */
	LARK	AR3,29744
	LACK	1
	MAR	* ,AR3
	AND	* 
	SACL	* 
	.line	7
;>>>> 	     if(time_cnt==0)
	LDPK	_time_cnt
	LAC	_time_cnt
	BNZ	L9
	.line	9
;>>>> 	 	 	ldd=!ldd;
	LAC	_ldd
	LARK	AR4,1
	BZ	LL8
	LARK	AR4,0
LL8:
	SAR	AR4,_ldd
	.line	14
;>>>> 	 	 	time_cnt=C_TIME;
	LACK	20
	SACL	_time_cnt
L9:
	.line	16
;>>>> 	 	 time_cnt--;
	SUBK	1
	SACL	_time_cnt
	.line	18
;>>>> 	 	 asm(" CLRC INTM");
 CLRC INTM
EPI0_6:
	.line	19
	MAR	* ,AR1
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	304,000000000H,1

	.sym	_inter2_isr,_inter2_isr,32,2,0
	.globl	_inter2_isr

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

	.line	4
;>>>> 		*EVAIFRA = *EVAIFRA & 0x0200;
	LARK	AR3,29743
	LACK	512
	AND	* 
	SACL	* ,AR4
	.line	5
;>>>> 		hall=*PADATDIR&0x0038;
	LARK	AR4,28824
	LACK	56
	AND	* 
	LDPK	_hall
	SACL	_hall
	.line	6
;>>>> 		if(*PIVR==0x0029)             /*time1 overbelow interrupt*/
;>>>> 			switch(hall)
;>>>> 				case 0x08:    /*PWM1-PWM6   ANC*/
	SBRK	122
	LAC	* 
	SUBK	41
	BNZ	L10
	B	L11
L12:
	.line	12
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L13
	.line	13
;>>>> 					*ACTRA=0x03fd;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#1021,* 
	B	L15
L13:
	.line	15
;>>>> 					*ACTRA=0x0df3; 
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3571,* 
	.line	16
;>>>> 					break;
;>>>> 				case 0x18:	/*PWM3-PWM6     BNC*/
	B	L15
L16:
	.line	20
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L17
	.line	21
;>>>> 					*ACTRA=0x03df;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#991,* 
	B	L15
L17:
	.line	23
;>>>> 					*ACTRA=0x0d3f;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3391,* 
	.line	24
;>>>> 					break;
;>>>> 				case 0x10:	/*PWM3-PWM2		BNA*/
	B	L15
L19:
	.line	28
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L20
	.line	29
;>>>> 					*ACTRA=0x0fd3;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#4051,* 
	B	L15
L20:
	.line	31
;>>>> 					*ACTRA=0x0f3d;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3901,* 
	.line	32
;>>>> 					break;
;>>>> 				case 0x30:	/*PWM5-PWM2		CNA*/
	B	L15
L22:
	.line	36
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L23
	.line	37
;>>>> 					*ACTRA=0x0df3;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3571,* 
	B	L15
L23:
	.line	39
;>>>> 					*ACTRA=0x03fd;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#1021,* 
	.line	40
;>>>> 					break;
;>>>> 				case 0x20:	/*PWM5-PWM4		CNB*/
	B	L15
L25:
	.line	44
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L26
	.line	45
;>>>> 					*ACTRA=0x0d3f;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3391,* 
	B	L15
L26:
	.line	47
;>>>> 					*ACTRA=0x03df;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#991,* 
	.line	48
;>>>> 					break;
;>>>> 				case 0x28:	/*PWM1-PWM4		ANB*/
	B	L15
L28:
	.line	52
;>>>> 					if(dir==0)
	LDPK	_dir
	LAC	_dir
	BNZ	L29
	.line	53
;>>>> 					*ACTRA=0x0f3d;
;>>>> 					else
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#3901,* 
	B	L15
L29:
	.line	55
;>>>> 					*ACTRA=0x0fd3;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#4051,* 
	.line	56
;>>>> 					break;
;>>>> 				default:
	B	L15
L31:
	.line	60
;>>>> 					*ACTRA=0x0fff;
	LARK	AR3,29715
	MAR	* ,AR3
	SPLK	#4095,* 
	B	L15
L11:
	.line	8
	ZALS	_hall
	SUBK	8
	BZ	L12
	SUBK	8
	BZ	L19
	SUBK	8
	BZ	L16
	SUBK	8
	BZ	L25
	SUBK	8
	BZ	L28
	SUBK	8
	BZ	L22
	B	L31
L15:
	.line	63
;>>>> 			*CMPR3=*CMPR2=*CMPR1=PWM_DUTY;
	LDPK	_PWM_DUTY
	LAC	_PWM_DUTY
	ADRK	4
	SACL	*+
	SACL	*+
	SACL	* 
L10:
EPI0_7:
	.line	75
	MAR	* ,AR1
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	382,000000000H,1

	.sym	_i,_i,14,2,16
	.globl	_i

	.sym	_adc_res,_adc_res,14,2,16
	.globl	_adc_res
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	I$$SAVE
	.global	I$$REST
	.end

⌨️ 快捷键说明

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