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

📄 vhz.asm

📁 本程序来自TI公司网站原程序,其功能是通过传统的V/F控制算法来实现对感应电机的控制,控制程序可以采用.asm也可以采用.C。 程序的具体算法和介绍在软件压缩包有详细介绍!
💻 ASM
📖 第 1 页 / 共 2 页
字号:

	.line	6
;>>>> 	        RstSystem();
;>>>> 	#if (BUILDLEVEL==LEVEL1)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=500;      /* This is based on 20kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
	CALL	_RstSystem
	.line	31
;>>>> 	        pwm.period_max=1000;      /* This is based on 20kHz PWM frequency (40MHz) */
;>>>> 	#endif  /* TARGET */            
	LDPK	_pwm
	SPLK	#1000,_pwm
	.line	39
;>>>> 	        VHZ_TI_Init(&vhz);
	LALK	_vhz+0
	SACL	*+
	CALL	_VHZ_TI_Init
	MAR	*-
	.line	44
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
	CALL	_rtmon_init
	.line	45
;>>>> 	        enable_ints();           /* Set off the system running.              */
	CALL	_enable_ints
	.line	50
;>>>> 	        while(drive.enable_flg==0)
	LDPK	_drive
	LAC	_drive
	BNZ	L2
L1:
	.line	52
;>>>> 	        drive.init(&drive);
	LALK	_drive+0
	SACL	*+
	LDPK	_drive+1
	LAC	_drive+1
	CALA
	MAR	*-
	.line	50
	LDPK	_drive
	LAC	_drive
	BZ	L1
L2:
	.line	58
;>>>> 	        pwm.mfunc_c1=0;
	LACK	0
	SACL	_pwm+2
	.line	59
;>>>> 	        pwm.mfunc_c2=0;
	SACL	_pwm+3
	.line	60
;>>>> 	        pwm.mfunc_c3=0;
	SACL	_pwm+4
	.line	61
;>>>> 	        pwm.init(&pwm);          
;>>>> 	#if     TARGET==F243                      
;>>>> 	        EVIFRA=0xffff;          
;>>>> 	#elif   TARGET==F2407                                                          
	LALK	_pwm+0
	SACL	*+
	LAC	_pwm+5
	CALA
	MAR	*-,AR3
	.line	69
;>>>> 		    EVAIFRA=0xffff;        
;>>>> 	#endif  /* TARGET */
	LARK	AR3,29743
	SPLK	#-1,* 
	.line	76
;>>>> 	        dac.qptr0=&vhz.svgen.va;
	LALK	_vhz+17
	LDPK	_dac
	SACL	_dac
	.line	77
;>>>> 	        dac.qptr1=&vhz.svgen.vb;
	LALK	_vhz+18
	SACL	_dac+1
	.line	78
;>>>> 	        dac.qptr2=&vhz.svgen.vc;
	LALK	_vhz+19
	SACL	_dac+2
	.line	79
;>>>> 	        dac.qptr3=&vhz.svgen.alpha;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL1) */  
;>>>> 	#if (BUILDLEVEL==LEVEL2)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=500;      /* This is based on 20kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1000;      /* This is based on 20kHz PWM frequency (40MHz) */
;>>>> 	#endif  /* TARGET */            
;>>>> 	        VHZ_TI_Init(&vhz);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.mfunc_c1=0;
;>>>> 	        pwm.mfunc_c2=0;
;>>>> 	        pwm.mfunc_c3=0;
;>>>> 	        pwm.init(&pwm);
;>>>> 	        dac.qptr0=&vhz.svgen.va;
;>>>> 	        dac.qptr1=&vhz.svgen.vb;
;>>>> 	        dac.qptr2=&vhz.svgen.vc;
;>>>> 	        dac.qptr3=&vhz.svgen.alpha;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL2) */   
;>>>> 	#if (BUILDLEVEL==LEVEL3)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=500;      /* This is based on 20kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1000;      /* This is based on 20kHz PWM frequency (40MHz) */
;>>>> 	#endif  /* TARGET */            
;>>>> 	        VHZ_TI_Init(&vhz);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.mfunc_c1=0;
;>>>> 	        pwm.mfunc_c2=0;
;>>>> 	        pwm.mfunc_c3=0;
;>>>> 	        pwm.init(&pwm);          
;>>>> 	        cap.init(&cap);
;>>>> 	        dac.qptr0=&vhz.svgen.va;
;>>>> 	        dac.qptr1=&vhz.svgen.vb;
;>>>> 	        dac.qptr2=&vhz.svgen.vc;
;>>>> 	        dac.qptr3=&vhz.svgen.alpha;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL3) */
;>>>> 	#if     TARGET==F243
;>>>> 	        EVIFRA=0x0ffff;           /* Clear all Group A EV interrupt flags    */
;>>>> 	#elif   TARGET==F2407                                                          
	LALK	_vhz+15
	SACL	_dac+3
	.line	226
;>>>> 	        EVAIFRA=0x0ffff;          /* Clear all EV1 Group A EV interrupt flags*/
;>>>> 	#endif /* TARGET */          
;>>>> 	        while(1)             /* Nothing running in the background at present */
	SPLK	#-1,* 
L3:
	.line	238
	B	L3
	.endfunc	327,000000000H,1

	.sym	_c_int02,_c_int02,32,2,0
	.globl	_c_int02

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

	.line	3
;>>>> 	     asm("      CLRC     XF "); 
      CLRC     XF 
	.line	5
;>>>> 	     isr_ticker++;
;>>>> 	#if (BUILDLEVEL==LEVEL1)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        EVIFRA=0x0ffff;           /* Clear all Group A EV interrupt flags    */
;>>>> 	#elif   TARGET==F2407                                                          
	LDPK	_isr_ticker
	LAC	_isr_ticker
	ADDK	1
	SACL	_isr_ticker
	.line	14
;>>>> 	        EVAIFRA=0x0ffff;          /* Clear all EV1 Group A EV interrupt flags*/
;>>>> 	#endif  /* TARGET */            
	LARK	AR3,29743
	MAR	* ,AR3
	SPLK	#-1,* ,AR1
	.line	20
;>>>> 	        drive.calc(&drive);
	LALK	_drive+0
	SACL	*+
	LAC	_drive+2
	CALA
	MAR	*-
	.line	26
;>>>> 	        VHZ_TI_Run(&vhz); 
	LALK	_vhz+0
	SACL	*+
	CALL	_VHZ_TI_Run
	MAR	*-
	.line	31
;>>>> 	        dac.update(&dac);
;>>>> 	#endif /* BUILDLEVEL==LEVEL1*/
;>>>> 	#if (BUILDLEVEL==LEVEL2)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        EVIFRA=0x0ffff;           /* Clear all Group A EV interrupt flags    */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        EVAIFRA=0x0ffff;          /* Clear all EV1 Group A EV interrupt flags*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        drive.calc(&drive);
;>>>> 	        VHZ_TI_Run(&vhz); 
;>>>> 	        pwm.mfunc_c1=vhz.svgen.va;         
;>>>> 	        pwm.mfunc_c2=vhz.svgen.vb;
;>>>> 	        pwm.mfunc_c3=vhz.svgen.vc;
;>>>> 	        pwm.update(&pwm);
;>>>> 	        dac.update(&dac);
;>>>> 	#endif /* BUILDLEVEL==LEVEL2*/
;>>>> 	#if (BUILDLEVEL==LEVEL3)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        EVIFRA=0x0ffff;           /* Clear all Group A EV interrupt flags    */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        EVAIFRA=0x0ffff;          /* Clear all EV1 Group A EV interrupt flags*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        drive.calc(&drive);
;>>>> 	        if((cap.read(&cap))==0)             /* Call the capture read function*/
;>>>> 	        speed.time_stamp=cap.time_stamp;    /* Read out new time stamp       */
;>>>> 	        speed.calc(&speed);                 /* Call the speed calulator      */
;>>>> 	        vhz.speed_value=speed.speed_prd;    /* Update vhz object speed info  */
;>>>> 	        VHZ_TI_Run(&vhz); 
;>>>> 	        pwm.mfunc_c1=vhz.svgen.va;         
;>>>> 	        pwm.mfunc_c2=vhz.svgen.vb;
;>>>> 	        pwm.mfunc_c3=vhz.svgen.vc;
;>>>> 	        pwm.update(&pwm);
;>>>> 	        dac.update(&dac);
;>>>> 	#endif /* BUILDLEVEL==LEVEL3*/
	LALK	_dac+0
	SACL	*+
	LDPK	_dac+5
	LAC	_dac+5
	CALA
	MAR	*-
	.line	127
;>>>> 	       asm("    SETC     XF ");
    SETC     XF 
EPI0_2:
	.line	128
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	456,000000000H,1

	.sym	_RstSystem,_RstSystem,32,2,0
	.globl	_RstSystem

	.func	459
;>>>> 	void RstSystem(void)
******************************************************
* FUNCTION DEF : _RstSystem
******************************************************
_RstSystem:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR0

	.line	8
;>>>> 	        WSGR=WAIT_STATES;         /* Initialize Wait State Generator         */
	LACK	64
	SACL	* 
	OUT	* ,0ffffh,AR1
	.line	9
;>>>> 	        disable_ints();           /* Make sure the interrupts are disabled   */
	CALL	_disable_ints
	.line	10
;>>>> 	        wdog.disable();           /* Vccp/Wddis pin/bit must be high         */
	LDPK	_wdog
	LAC	_wdog
	CALA
	.line	11
;>>>> 	        IMR=0x02;                 /* Set up interrupt mask to enable INT2    
;>>>> 	                                     until an explicit enable.               */
;>>>> 	#if (TARGET==F243)
;>>>> 	        SCSR=0x40c0;              /* Init SCSR */
;>>>> 	        EVIMRA=0x0200;            /* Enable the timer underflow interrupt    */
;>>>> 	#endif
;>>>> 	#if (TARGET==F2407)
	LARK	AR3,4
	LACK	2
	MAR	* ,AR3
	SACL	* 
	.line	25
;>>>> 	        SCSR1=0xc;                /* Init SCSR */
	LARK	AR4,28696
	ADRK	8
	MAR	* ,AR4
	SAR	AR3,* ,AR5
	.line	26
;>>>> 	        EVAIMRA=0x0200;           /* Enable the timer underflow interrupt    */
;>>>> 	#endif  /* TARGET */
	LARK	AR5,29740
	SPLK	#512,* ,AR1
EPI0_3:
	.line	29
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	487,000000000H,1

	.sym	_phantom,_phantom,32,2,0
	.globl	_phantom

	.func	490
;>>>> 	void interrupt phantom(void)
;>>>> 		static int phantom_count;
******************************************************
* FUNCTION DEF : _phantom
******************************************************
_phantom:
	CALL	I$$SAVE
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+


	.sym	_phantom_count,_phantom_count$1,4,3,16
	.line	5
;>>>> 		phantom_count ++;  
	LDPK	_phantom_count$1
	LAC	_phantom_count$1
	ADDK	1
	SACL	_phantom_count$1
EPI0_4:
	.line	15
	SBRK	1
	B	I$$REST,AR1   ;and return

	.endfunc	504,000000000H,1

	.sym	_rtmon_init,_rtmon_init,32,2,0
	.globl	_rtmon_init

	.func	512
;>>>> 	void rtmon_init(void)
******************************************************
* FUNCTION DEF : _rtmon_init
******************************************************
_rtmon_init:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 	    asm("       CALL    MON_RT_CNFG ");
       CALL    MON_RT_CNFG 
EPI0_5:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	515,000000000H,1

	.sym	_isr_ticker,_isr_ticker,4,2,16
	.globl	_isr_ticker
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	_enable_ints
	.global	I$$SAVE
	.global	I$$REST
	.global	_disable_ints
	.end

⌨️ 快捷键说明

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