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

📄 tsf_main.asm

📁 变频器程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.line	94
;>>>> 	       svgen.d = voltage_dq.d;
	LDPK	_voltage_dq
	BLDD	_voltage_dq,#_svgen
	.line	95
;>>>> 	       svgen.q = voltage_dq.q;
	BLKD	#_voltage_dq+1,_svgen+1
	.line	96
;>>>> 	       svgen.calc((void *)&svgen);
	LALK	_svgen+0
	SACL	*+
	LAC	_svgen+5
	CALA
	MAR	*-
	.line	98
;>>>> 	       pwm.mfunc_c1 = svgen.va;
	LDPK	_svgen+2
	BLDD	_svgen+2,#_pwm+2
	.line	99
;>>>> 	       pwm.mfunc_c2 = svgen.vb;
	BLKD	#_svgen+3,_pwm+3
	.line	100
;>>>> 	       pwm.mfunc_c3 = svgen.vc;
	BLKD	#_svgen+4,_pwm+4
	.line	101
;>>>> 	       pwm.update(&pwm);
	LALK	_pwm+0
	SACL	*+
	LAC	_pwm+6
	CALA
	MAR	*-
	.line	103
;>>>> 	       ilg2_vdc.read(&ilg2_vdc);
	LALK	_ilg2_vdc+0
	SACL	*+
	LDPK	_ilg2_vdc+12
	LAC	_ilg2_vdc+12
	CALA
	MAR	*-
	.line	104
;>>>> 	       current_abc.a = ilg2_vdc.Imeas_a;
	LDPK	_ilg2_vdc+2
	BLDD	_ilg2_vdc+2,#_current_abc
	.line	105
;>>>> 		   current_abc.b = ilg2_vdc.Imeas_b;
	BLKD	#_ilg2_vdc+5,_current_abc+1
	.line	106
;>>>> 		   current_abc.c = ilg2_vdc.Imeas_c;
;>>>> 	//	   observe((current_abc.a^0x8000)>>4,(current_abc.b^0x8000)>>4,(rg.rmp_out^0x8000)>>4,(sp.speed_frq^0x8000)>>4);
	BLKD	#_ilg2_vdc+9,_current_abc+2
	.line	124
;>>>> 	       Vbus = ilg2_vdc.Vdc_meas;
;>>>> 	 //observe((current_dq.d^0x8000)>>4,(current_dq.q^0x8000)>>4,(current_DQ.d^0x8000)>>4,(current_DQ.q^0x8000)>>4);
;>>>> 	//	   observe(  channel_0<<2, channel_1<<2, channel_2<<2,0);
	BLKD	#_ilg2_vdc+8,_Vbus
	.line	134
;>>>> 		   clark(&current_abc,&current_dq);
	LALK	_current_dq+0
	SACL	*+
	LALK	_current_abc+0
	SACL	*+
	CALL	_clark
	SBRK	2
	.line	136
;>>>> 		   current_dqt.D = current_dq.d;
	LDPK	_current_dq
	BLDD	_current_dq,#_current_dqt
	.line	137
;>>>> 	       current_dqt.Q = current_dq.q;
;>>>> 	       //current_dqt.theta = 0;
	BLKD	#_current_dq+1,_current_dqt+1
	.line	142
;>>>> 	       current_dqt.theta = cur.theta_cur_mod;
;>>>> 	      //current_dqt.theta = rg.rmp_out;
	BLKD	#_cur+9,_current_dqt+2
	.line	146
;>>>> 	      park(&current_dqt,&current_DQ);
;>>>> 	      //observe((current_dqt.D^0x8000)>>4,(current_dqt.Q^0x8000)>>4,(cur.theta_cur_mod^0x8000)>>4,0);
	LALK	_current_DQ+0
	SACL	*+
	LALK	_current_dqt+0
	SACL	*+
	CALL	_park
	SBRK	2
	.line	148
;>>>> 	       volt.Mfunc_V1=svgen.va;
	LDPK	_svgen+2
	BLDD	_svgen+2,#_volt+1
	.line	149
;>>>> 		   volt.Mfunc_V2=svgen.vb;
	BLKD	#_svgen+3,_volt+2
	.line	150
;>>>> 		   volt.Mfunc_V3=svgen.vc;
	BLKD	#_svgen+4,_volt+3
	.line	151
;>>>> 		   volt.DC_bus=Vbus;
	BLKD	#_Vbus,_volt
	.line	152
;>>>> 		   volt.calc(&volt);
;>>>> 		   //fe.theta_r_fe=fe.theta_r_fe-rg.rmp_out;
;>>>> 		   //observe((fe.theta_r_fe^0x8000)>>4,(rg.rmp_out^0x8000)>>4,(current_dq.d^0x8000)>>4,(current_dq.q^0x8000)>>4);
	LALK	_volt+0
	SACL	*+
	LAC	_volt+9
	CALA
	MAR	*-
	.line	164
;>>>> 		   qep1.calc(&qep1);
	LALK	_qep1+0
	SACL	*+
	LDPK	_qep1+9
	LAC	_qep1+9
	CALA
	MAR	*-
	.line	166
;>>>> 	       sp.theta_elec = qep1.theta_elec; //qep1.theta_mech;
	LDPK	_qep1+6
	BLDD	_qep1+6,#_sp
	.line	167
;>>>> 	       sp.calc(&sp);
	LALK	_sp+0
	SACL	*+
	LAC	_sp+8
	CALA
	MAR	*-
	.line	169
;>>>> 	     observe((sp.speed_frq^0x8000)>>4,(*T2CNT^0x8000),(current_DQ.q^0x8000)>>4,0);
	LACK	0
	SACL	*+,AR0
	LALK	1,15
	LDPK	_current_DQ+1
	XOR	_current_DQ+1
	SACL	* 
	RSXM
	LAC	* ,11,AR1
	SACH	*+,1,AR3
	LARK	AR3,29701
	LALK	1,15
	XOR	* ,AR1
	SACL	*+,AR0
	LALK	1,15
	XOR	_sp+4
	SACL	* 
	LAC	* ,11,AR1
	SACH	*+,1
	CALL	_observe
	SBRK	4
	.line	170
;>>>> 	       cur.i_cur_mod_D = current_DQ.d;
	LDPK	_current_DQ
	BLDD	_current_DQ,#_cur
	.line	171
;>>>> 		   cur.i_cur_mod_Q = current_DQ.q;
	BLKD	#_current_DQ+1,_cur+1
	.line	172
;>>>> 		   cur.spd_cur_mod = sp.speed_frq;
	BLKD	#_sp+4,_cur+2
	.line	173
;>>>> 		   if(cur.spd_cur_mod<0) cur.spd_cur_mod = 0;    //sp.speed_frq;
	SSXM
	LAC	_cur+2
	BGEZ	L26
	LACK	0
	SACL	_cur+2
L26:
	.line	174
;>>>> 		   cur.calc(&cur);
;>>>> 		  // observe((cur.theta_cur_mod^0x8000)>>4,0,0,0);
;>>>> 	     //observe(qep1.theta_elec>>4,qep1.theta_mech>>4,sp.speed_frq>>4,sp.speed_rpm>>4);
;>>>> 	     //observe((0x500^0x8000)>>4,(pid_spd.pid_fdb_reg3^0x8000)>>4,(pid_iq.pid_fdb_reg3^0x8000)>>4,(current_DQ.q^0x8000)>>4); 
	LALK	_cur+0
	SACL	*+
	LAC	_cur+10
	CALA
	MAR	*-
EPI0_37:
	.line	182
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	888,000000000H,4

	.sym	_timer1_isr,_timer1_isr,32,2,0
	.globl	_timer1_isr

	.func	891
;>>>> 	void timer1_isr(void)/*	interrupt void timer1_isr(void)*/
******************************************************
* FUNCTION DEF : _timer1_isr
******************************************************
_timer1_isr:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

EPI0_38:
	.line	3
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	893,000000000H,1

	.sym	_led,_led,32,2,0
	.globl	_led

	.func	900
;>>>> 	void led(void)/*	interrupt void timer1_isr(void)*/
******************************************************
* FUNCTION DEF : _led
******************************************************
_led:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 				led_cnt++;
	LDPK	_led_cnt
	LAC	_led_cnt
	ADDK	1
	SACL	_led_cnt
	.line	4
;>>>> 	     	if(led_cnt==1000)
	LAC	_led_cnt
	SUBK	1000
	BNZ	L27
	.line	9
;>>>> 	  		    *PFDATDIR = *PFDATDIR ^ 0x0040;    //IOPF6取反,使LED变化
	LARK	AR3,28822
	LACK	64
	MAR	* ,AR3
	XOR	* 
	SACL	* 
	.line	14
;>>>> 	     	led_cnt=0; 
	LACK	0
	SACL	_led_cnt
L27:
EPI0_39:
	.line	19
	MAR	* ,AR1
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	918,000000000H,1

	.sym	_observe,_observe,32,2,0
	.globl	_observe

	.func	925
;>>>> 	 void observe(unsigned int x0,unsigned int x1,unsigned int x2,unsigned int x3)
******************************************************
* FUNCTION DEF : _observe
******************************************************
_observe:

LF40	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_x0,-3+LF40,14,9,16
	.sym	_x1,-4+LF40,14,9,16
	.sym	_x2,-5+LF40,14,9,16
	.sym	_x3,-6+LF40,14,9,16
	.line	3
;>>>> 	 { DAC0=x0;
	LARK	AR2,-3+LF40
	MAR	*0+
	OUT	*-,08018h
	.line	4
;>>>> 	   DAC1=x1;
	OUT	*-,08019h
	.line	5
;>>>> 	   DAC2=x2;
	OUT	*-,0801ah
	.line	6
;>>>> 	   DAC3=x3;
	OUT	* ,0801bh,AR0
	.line	7
;>>>> 	   DAOUT=3;/*start DAC*/
	LACK	3
	SACL	* 
	OUT	* ,08020h,AR1
EPI0_40:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	932,000000000H,1

	.sym	_delay,_delay,32,2,0
	.globl	_delay

	.func	936
;>>>> 	 void delay(void)       
;>>>> 	 { int i;
******************************************************
* FUNCTION DEF : _delay
******************************************************
_delay:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_i,1,4,1,16
	.line	3
;>>>> 	   for(i=1;i<5000;i++)
	LACK	1
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	SSXM
	LAC	* 
	SUBK	5000
	BGEZ	L29
L28:
	.line	4
;>>>> 	   { asm(" NOP");
 NOP
	.line	3
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* 
	SUBK	5000
	BLZ	L28
L29:
EPI0_41:
	.line	6
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	941,000000000H,2

	.sym	_sysinit,_sysinit,32,2,0
	.globl	_sysinit

	.func	943
;>>>> 	 void sysinit(void)
******************************************************
* FUNCTION DEF : _sysinit
******************************************************
_sysinit:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	2
;>>>> 	 {*IMR = 0x0000;
	LARK	AR3,4
	LACK	0
	SACL	* 
	.line	5
;>>>> 	    *SCSR1 = 0x00FD;
	LARK	AR4,28696
	ADRK	249
	MAR	* ,AR4
	SAR	AR3,*+
	.line	21
;>>>> 	    *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
	LACK	11
	OR	* 
	ANDK	15
	SACL	* ,AR3
	.line	32
;>>>> 	    *WDCR  = 0x00E8;
	SBRK	21
	MAR	* ,AR4
	ADRK	16
	SAR	AR3,* ,AR3
	.line	42
;>>>> 	    WSGR = 0x0000;
	SBRK	232
	MAR	* ,AR0
	SAR	AR3,*
	OUT	* ,0ffffh
	.line	43
;>>>> 	    asm(" NOP");
 NOP
	.line	44
;>>>> 	    WSGR = 0x0040;   
	MAR	* ,AR3
	ADRK	64
	MAR	* ,AR0
	SAR	AR3,*
	OUT	* ,0ffffh,AR3
	.line	45
;>>>> 	    WSGR=0x0100;
;>>>> 	   // *MCRA = 0x0FC0;                   /* group A pins */
	ADRK	192
	MAR	* ,AR0
	SAR	AR3,*
	OUT	* ,0ffffh,AR4
	.line	56
;>>>> 	   *MCRA = 0x0540;   
;>>>> 	  // *MCRA = 0x0000; 
	ADRK	103
	SPLK	#1344,* 
	.line	78
;>>>> 	    *MCRB = 0xFE00;                     /* group B pins */
	ADRK	2
	SPLK	#65024,* 
	.line	97
;>>>> 	    *MCRC = 0x0000;                     /* group C pins */
	LACK	0
	ADRK	2
	SACL	* ,AR5
	.line	122
;>>>> 	*T1CON = 0x0000;                   /* disable timer 1 */
	LARK	AR5,29700
	SACL	* 
	.line	123
;>>>> 	*T2CON = 0x0000;                   /* disable timer 2 */
	ADRK	4
	SACL	* ,AR3
	.line	125
;>>>> 	*GPTCONA = 0x0080;                  /* configure GPTCONA */  //timer 1 下溢启动AD
	SBRK	128
	MAR	* ,AR5
	SBRK	8
	SAR	AR3,*+
	.line	145
;>>>> 	*T1CNT = 0x0000;                     /* clear timer counter */
	SACL	* 
	.line	146
;>>>> 	*T1PR = timer1_per;                /* set timer period 750*/// 4000
;>>>> 	//*DBTCONA = 0x0FE4;                /* deadband units off */
	ADRK	2
	SPLK	#4000,* 
	.line	166
;>>>> 	*CMPR1 = 0;/*pwm_duty;*/                 /* set PWM1 duty cycle 563*/
	ADRK	20
	SACL	*+
	.line	167
;>>>> 	*CMPR2 = 0;/*pwm_duty;*/
	SACL	*+
	.line	168
;>>>> 	*CMPR3 = 0;/*pwm_duty;*/ 
;>>>> 	//*ACTRA =0xA888;                   /* PWM1 pin set active high */     
;>>>> 	//*ACTRA=0x0666;
	SACL	* 
	.line	171
;>>>> 	 *ACTRA=0xA555;
;>>>> 	//*ACTRA=0x0000;
;>>>> 	//*ACTRA=0x0FFF;
	SBRK	6
	SPLK	#42325,* 
	.line	185
;>>>> 	*COMCONA = 0x8200;  /* configure COMCON register */
	SBRK	2
	SPLK	#33280,* 
	.line	206
;>>>> 	*T1CON = 0x0840;                   /* configure T1CON register */
	SBRK	13
	SPLK	#2112,*+
	.line	239
;>>>> 	    *T2CNT = 0x0000;                    /* clear timer counter */
;>>>> 	    //*T2PR = timer2_per;                 /* set timer period */
;>>>> 	    //*T2CON = 0x124C;                    /* configure T2CON register */
;>>>> 	   // *IMR = 0x0000;                      /* clear the IMR register */
	SACL	* ,AR3
	.line	259
;>>>> 	    *IFR = 0xFFFF;
	SBRK	122
	SPLK	#65535,* 
	.line	260
;>>>> 	*IMR = 0x0002;                      /* enable desired core interruptsINT2 */
	LACK	2
	SBRK	2
	SACL	* ,AR5
	.line	273
;>>>> 	    *EVAIFRA = 0xFFFF;                  /* clear all EVA group A interrupts */   
	ADRK	42
	SPLK	#65535,*+
	.line	292
;>>>> 	    *EVAIFRB = 0xFFFF;                  /* clear all EVA group B interrupts */
	SPLK	#65535,*+
	.line	311
;>>>> 	    *EVAIFRC = 0xFFFF;                  /* clear all EVA group C interrupts */
	SPLK	#65535,* 
	.line	312
;>>>> 	*EVAIMRA = 0x0200;                  /* enable desired EVA group A interrupts */
	SBRK	5
	SPLK	#512,* ,AR3
	.line	328
;>>>> 	*EVAIMRB = 0x0000;                  /* enable desired EVA group B interrupts */
	SBRK	4
	MAR	* ,AR5
	MAR	*+
	SAR	AR3,*+
	.line	341
;>>>> 	*EVAIMRC = 0x0000;                  /* enable desired EVA group C interrupts */
	SAR	AR3,* 
	.line	354
;>>>> 	*GPTCONA = *GPTCONA|0x0080; 
	LACK	128
	SBRK	46
	OR	* 
	SACL	* ,AR4
	.line	376
;>>>> 	*ADCTRL1=0x4000;      /*reset ADC */
	ADRK	12
	SPLK	#16384,* 
	.line	377
;>>>> 	asm("NOP");
NOP
	.line	379
;>>>> 	*ADCTRL1=0x0010;      
	MAR	* ,AR3
	ADRK	16
	MAR	* ,AR4
	SAR	AR3,*+
	.line	394
;>>>> 	 *ADCTRL2=0x8100;  
	SPLK	#33024,*+,AR3
	.line	411
;>>>> 	 *MAX_CONV=0x000f;      /* Number of conversions=4*/  
	MAR	*-,AR4
	SAR	AR3,*+
	.line	412
;>>>> 	 *CHSELSEQ1=0x3210; 
	SPLK	#12816,*+
	.line	413
;>>>> 	 *CHSELSEQ2=0x7654;
	SPLK	#30292,*+
	.line	414
;>>>> 	 *CHSELSEQ3=0xBA98;
	SPLK	#47768,*+
	.line	415
;>>>> 	 *CHSELSEQ4=0xFEDC; 
	SPLK	#65244,* 
	.line	420
;>>>> 	      *PFDATDIR = *PFDATDIR | 0x4000;      //IOPF6输出有效      
	LACK	16384
	SBRK	16
	OR	* 
	SACL	* 
	.line	421
;>>>> 	   *PADATDIR=*PADATDIR|0x8080;
	LACK	32896
	ADRK	2
	OR	* 
	SACL	* 
	.line	422
;>>>> 	 *PBDATDIR=*PBDATDIR|0x5A5A;
	LACK	23130
	ADRK	2
	OR	* 
	SACL	* 
	.line	423
;>>>> 	    *PBDATDIR=*PBDATDIR&0x5FFF;
	LACK	24575
	AND	* 
	SACL	* 
	.line	424
;>>>> 	   *PEDATDIR=*PEDATDIR|0xFEFE;
	LACK	65278
	SBRK	5
	OR	* 
	SACL	*+
	.line	425
;>>>> 	   *PFDATDIR=*PFDATDIR|0x1111;
	LACK	4369
	OR	* 
	SACL	* 
	.line	426
;>>>> 	    *PFDATDIR=*PFDATDIR&0xD1FF;
	LACK	53759
	AND	* 
	SACL	* 
	.line	427
;>>>> 	   *PADATDIR=*PADATDIR|0xFFFF;  //test
	LACK	65535
	ADRK	2
	OR	* 
	SACL	* 
	.line	428
;>>>> 	     *PADATDIR=*PADATDIR|0x2000;      //cap3
	LACK	8192
	OR	* 
	SACL	* 
	.line	429
;>>>> 	     asm(" setc INTM ");
 setc INTM 
	.line	430
;>>>> 	  EnDrive();
;>>>> 	  // DisDrive();
	CALL	_EnDrive,AR1
	.line	432
;>>>> 	  GndCeptRes();
;>>>> 	  //UpJzgEn();
	CALL	_GndCeptRes
	.line	434
;>>>> 	  UpJzgEn();
	CALL	_UpJzgEn
	.line	435
;>>>> 	 UpJcqEn();
	CALL	_UpJcqEn
EPI0_42:
	.line	438
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	1380,000000000H,1

	.sym	_current_dqt,_current_dqt,8,2,48,.fake19
	.globl	_current_dqt

	.sym	_voltage_dq,_voltage_dq,8,2,32,.fake18
	.globl	_voltage_dq

	.sym	_current_dq,_current_dq,8,2,32,.fake18
	.globl	_current_dq

	.sym	_current_abc,_current_abc,8,2,48,.fake17
	.globl	_current_abc

	.sym	_current_DQ,_current_DQ,8,2,32,.fake18
	.globl	_current_DQ

	.sym	_Vbus,_Vbus,4,2,16
	.globl	_Vbus

	.sym	_voltage_DQt,_voltage_DQt,8,2,48,.fake19
	.globl	_voltage_DQt
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	I$$SAVE
	.global	I$$REST
	.global	_ipark
	.global	_clark
	.global	_park
	.end

⌨️ 快捷键说明

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