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

📄 f2407hall3.asm

📁 TI公司的DSP(LF2407A)编写的有霍尔位置传感器的无刷直流电机控制程序,内含子程序说明
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -i../src -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include f2407hall3.c C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407hall3.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407hall3.if C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407hall3.asm C:\DOCUME~1\liuping\LOCALS~1\Temp\f2407hall3.tmp 
	.port
	.file	"f2407hall3.c"
	.file	"../src\regs240x.h"
	.globl	_portffff
	.globl	_portff0f
	.globl	_port0
	.globl	_port1
	.globl	_port2
	.globl	_port3
	.globl	_port4
	.file	"../src\f2407hall3.h"

	.stag	.fake0,144
	.member	_HallMap,0,52,8,64,,4
	.member	_CapFlag,64,4,8,16
	.member	_HallMapPointer,80,4,8,16
	.member	_tab,96,4,8,16
	.member	_init,112,144,8,16
	.member	_read,128,144,8,16
	.eos
	.sym	_HALL3,0,8,13,144,.fake0
	.sym	_HALL3_handle,0,24,13,16,.fake0
	.globl	_F2407_EV2_HALL3_Init
	.globl	_F2407_EV2_HALL3_Read
	.file	"f2407hall3.c"
	.text

	.sym	_F2407_EV2_HALL3_Init,_F2407_EV2_HALL3_Init,32,2,0
	.globl	_F2407_EV2_HALL3_Init

	.func	20
;>>>> 	void  F2407_EV2_HALL3_Init(HALL3 *p)
******************************************************
* FUNCTION DEF : _F2407_EV2_HALL3_Init
******************************************************
_F2407_EV2_HALL3_Init:

LF1	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR3

	.sym	_p,-3+LF1,24,9,16,.fake0
	.sym	_HallGpio_temp,1,4,1,16
	.sym	_HallGpio,2,4,1,16
	.sym	_i,3,4,1,16
	.line	2
;>>>> 			int HallGpio_temp,HallGpio,i;
	.line	4
;>>>> 	        MCRC=MCRC&0x0fc7f;    					// Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
	LARK	AR3,28820
	LACK	64639
	AND	* 
	SACL	*+
	.line	5
;>>>> 	        PEDATDIR=PEDATDIR&0x7fff;				//Data Direction as input
	LACK	32767
	AND	* 
	SACL	*+
	.line	6
;>>>> 	       PFDATDIR=PFDATDIR&0x0fcff;
	LACK	64767
	AND	* 
	SACL	* 
	.line	8
;>>>> 	        HallGpio = PFDATDIR;
	SSXM
	LAC	*-,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	9
;>>>> 	        HallGpio = (HallGpio&0x03)<<1;
	ANDK	3
	SACL	* 
	LAC	* ,1,AR2
	SACL	*-,AR3
	.line	10
;>>>> 	       HallGpio_temp =PEDATDIR;
	LAC	* ,AR2
	SACL	* 
	.line	11
;>>>> 			if((HallGpio_temp&0X0080)!=0)		   // HallGpio.2-0 = IOPF1-0+IOPE7
	BIT	* ,8
	BBZ	L1
	.line	12
;>>>> 			HallGpio=HallGpio+1;
	MAR	*+
	LAC	* 
	ADDK	1
	SACL	* 
L1:
	.line	13
;>>>> 			for (i=0;i<=3;i++)
	LACK	0
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	LAC	* 
	SUBK	3
	BGZ	L4
L2:
	.line	14
;>>>> 			p->HallMap[i] == HallGpio;
;>>>> 	       	switch(HallGpio)                 	  // motor  table
	LAC	* 
	SBRK	6-LF1
	ADDS	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	.line	13
	ADRK	6-LF1
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* 
	SUBK	3
	BLEZ	L2
	B	L4
L5:
	.line	17
;>>>> 			 case 1:{p->tab=5;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	5
	ADRK	6
	SACL	* 
	B	L6
L7:
	.line	18
;>>>> 			 case 2:{p->tab=3;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	3
	ADRK	6
	SACL	* 
	B	L6
L8:
	.line	19
;>>>> 			 case 3:{p->tab=4;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	4
	ADRK	6
	SACL	* 
	B	L6
L9:
	.line	20
;>>>> 			 case 4:{p->tab=1;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	1
	ADRK	6
	SACL	* 
	B	L6
L10:
	.line	21
;>>>> 			 case 5:{p->tab=6;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	6
	ADRK	6
	SACL	* 
	B	L6
L11:
	.line	22
;>>>> 			 case 6:{p->tab=2;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	2
	ADRK	6
	SACL	* 
	B	L6
L12:
	.line	23
;>>>> 			 default:p->tab=p->tab;
	MAR	* ,AR2
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	SSXM
	ADRK	6
	LAC	* ,AR4
	ADRK	6
	SACL	* 
	B	L6
L4:
	.line	15
	MAR	*-
	LAC	* 
	SUBK	1
	BZ	L5
	SUBK	1
	BZ	L7
	SUBK	1
	BZ	L8
	SUBK	1
	BZ	L9
	SUBK	1
	BZ	L10
	SUBK	1
	BZ	L11
	B	L12
L6:
	.line	25
;>>>> 	        CAPCONB = HALL3_INIT_STATE;  		   // Set up capture units, CAP4-6 using GP timer 4
	LARK	AR4,29984
	MAR	* ,AR4
	SPLK	#-20228,* 
	.line	26
;>>>> 	        CAPFIFOB = 0x1500;           		   // Write "01" each CAPxFIFO for EV to believe that there is already an entry in the FIFO
	ADRK	2
	SPLK	#5376,* ,AR5
	.line	28
;>>>> 	        MCRC=MCRC|0x0380;    					// Set up the capture4-6 pins to primary functions
	LARK	AR5,28820
	LACK	896
	OR	* 
	SACL	* ,AR1
EPI0_1:
	.line	30
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	49,000000000H,4

	.sym	_F2407_EV2_HALL3_Read,_F2407_EV2_HALL3_Read,32,2,0
	.globl	_F2407_EV2_HALL3_Read

	.func	52
;>>>> 	void F2407_EV2_HALL3_Read(HALL3 *p)
******************************************************
* FUNCTION DEF : _F2407_EV2_HALL3_Read
******************************************************
_F2407_EV2_HALL3_Read:

LF2	.set	0

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

	.sym	_p,-3+LF2,24,9,16,.fake0
	.sym	_HallGpio_temp,1,4,1,16
	.sym	_HallGpio,2,4,1,16
	.sym	_i,3,4,1,16
	.line	2
;>>>> 		int HallGpio_temp,HallGpio,i;
	.line	4
;>>>> 	    p->CapFlag = EVBIFRC;  			  // Save capture flag register, convenient for Watch Window
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR4
	LARK	AR4,30001
	SSXM
	LAC	* ,AR3
	ADRK	4
	SACL	* 
	.line	5
;>>>> 	    if (p->CapFlag==0)                 // NO_EDGE_DETECTED: No hall signal edges detected on CAP4-6 (bits 0-2)
;>>>> 	    else                               // EDGE_DETECTED: Any hall signal edges detected on CAP1-3
	LAC	* 
	BZ	L14
	.line	10
;>>>> 	        EVBIFRC = 0x0007;         // Clear all CAP1-3 Int-flags 
	LACK	7
	MAR	* ,AR4
	SACL	* ,AR5
	.line	11
;>>>> 			MCRC=MCRC&0x0fc7f;    					// Configure CAP4-6 as GPIO (IOPE7+IOPF0-1)
	LARK	AR5,28820
	LACK	64639
	AND	* 
	SACL	*+
	.line	12
;>>>> 	        PEDATDIR=PEDATDIR&0x7fff;				//Data Direction as input
	LACK	32767
	AND	* 
	SACL	*+
	.line	13
;>>>> 	        PFDATDIR=PFDATDIR&0x0fcff;
	LACK	64767
	AND	* 
	SACL	* ,AR2
	.line	14
;>>>> 			for (i=0;i<=3;i++)
	LACK	0
	ADRK	6-LF2
	SACL	* 
	LAC	* 
	SUBK	3
	BGZ	L16
	MAR	*-,AR3
L15:
	.line	16
;>>>> 	        HallGpio = PFDATDIR;
	LARK	AR3,28822
	LAC	*-,AR2
	SACL	* ,AR0
	.line	17
;>>>> 	        HallGpio = (HallGpio&0x03)<<1;
;>>>> 	        //HallGpio_temp =PEDATDIR;
	ANDK	3
	SACL	* 
	LAC	* ,1,AR2
	SACL	* ,AR3
	.line	19
;>>>> 			if((PEDATDIR&0X0080)!=0)		   // HallGpio.2-0 = IOPF1-0+IOPE7
	BIT	* ,8
	BBZ	L17
	.line	20
;>>>> 			HallGpio=HallGpio+1;
	MAR	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
L17:
	.line	22
;>>>> 			p->HallMap[i] = HallGpio;
	MAR	* ,AR2
	MAR	*+
	LAC	* 
	SBRK	6-LF2
	ADDS	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR2
	ADRK	5-LF2
	LAC	*+,AR4
	SACL	* ,AR2
	.line	14
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	*-,AR3
	SUBK	3
	BLEZ	L15
L16:
	.line	24
;>>>> 	        MCRC=MCRC|0x0380;    					// Set up the capture4-6 pins to primary functions
	LARK	AR3,28820
	LACK	896
	MAR	* ,AR3
	OR	* 
	SACL	* ,AR2
	.line	25
;>>>> 		    if((p->HallMap[0] == p->HallMap[1])&&(p->HallMap[2] == p->HallMap[3])&&(p->HallMap[1] == p->HallMap[3]))
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR4,* 
	LAR	AR5,* ,AR5
	LAC	* ,AR4
	MAR	*+
	SUB	* 
	BNZ	L19
	MAR	*+
	LAC	* ,AR5
	ADRK	3
	SUB	* 
	BNZ	L19
	SBRK	2
	LAC	* ,AR4
	MAR	*+
	SUB	* 
	BNZ	L19
	.line	26
;>>>> 	      	p->HallMapPointer =p->HallMap[0]; 
;>>>> 	       	switch(p->HallMapPointer)                  //old motor  table
	SBRK	3
	LAC	* ,AR5
	ADRK	4
	SACL	* 
	B	L19
L20:
	.line	30
;>>>> 			 case 1:{p->tab=5;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	5
	ADRK	6
	SACL	* 
	B	L14
L22:
	.line	31
;>>>> 			 case 2:{p->tab=3;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	3
	ADRK	6
	SACL	* 
	B	L14
L23:
	.line	32
;>>>> 			 case 3:{p->tab=4;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	4
	ADRK	6
	SACL	* 
	B	L14
L24:
	.line	33
;>>>> 			 case 4:{p->tab=1;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	1
	ADRK	6
	SACL	* 
	B	L14
L25:
	.line	34
;>>>> 			 case 5:{p->tab=6;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	6
	ADRK	6
	SACL	* 
	B	L14
L26:
	.line	35
;>>>> 			 case 6:{p->tab=2;break;}
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	2
	ADRK	6
	SACL	* 
	B	L14
L27:
	.line	36
;>>>> 			 default:p->tab=0;
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	0
	ADRK	6
	SACL	* 
	B	L14
L19:
	.line	28
	MAR	* ,AR2
	LAR	AR4,* ,AR4
	ADRK	5
	LAC	* 
	SUBK	1
	BZ	L20
	SUBK	1
	BZ	L22
	SUBK	1
	BZ	L23
	SUBK	1
	BZ	L24
	SUBK	1
	BZ	L25
	SUBK	1
	BZ	L26
	B	L27
L14:
EPI0_2:
	.line	46
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	97,000000000H,4
	.end

⌨️ 快捷键说明

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