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

📄 pid_reg2.asm

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

	.stag	.fake0,208
	.member	_fb_reg2,0,4,8,16
	.member	_ref_reg2,16,4,8,16
	.member	_k0_reg2,32,4,8,16
	.member	_k1_reg2,48,4,8,16
	.member	_kc_reg2,64,4,8,16
	.member	_un_reg2,80,4,8,16
	.member	_en0_reg2,96,4,8,16
	.member	_upi_reg2,112,4,8,16
	.member	_epi_reg2,128,4,8,16
	.member	_max_reg2,144,4,8,16
	.member	_min_reg2,160,4,8,16
	.member	_out_reg2,176,4,8,16
	.member	_calc,192,148,8,16
	.eos
	.sym	_PID2,0,8,13,208,.fake0
	.sym	_PID2_handle,0,24,13,16,.fake0
	.globl	_pid2_calc
	.file	"pid_reg2.c"
	.text

	.sym	_pid2_calc,_pid2_calc,32,2,0
	.globl	_pid2_calc

	.func	10
;>>>> 	void pid2_calc(PID2 *v)
******************************************************
* FUNCTION DEF : _pid2_calc
******************************************************
_pid2_calc:

LF1	.set	0

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

	.sym	_v,-3+LF1,24,9,16,.fake0
	.sym	_Up,1,4,1,16
	.sym	_UpTemp,2,5,1,32
	.sym	_UiTemp,4,5,1,32
	.line	2
;>>>> 	    int Up;
;>>>> 	    long UpTemp,UiTemp;
;>>>> 	    // Compute the error
	.line	6
;>>>> 	    v->en0_reg2 = v->ref_reg2 - v->fb_reg2;
;>>>> 	    // Compute the proportional output
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR4
	SSXM
	MAR	*+
	LAC	* ,AR3
	SUB	* 
	ADRK	6
	SACL	* 
	.line	9
;>>>> 		UpTemp = ((long)(v->k0_reg2))*((long)(v->en0_reg2));
	LT	* ,AR4
	MAR	*+
	MPY	* ,AR2
	ADRK	5-LF1
	SPL	*+
	SPH	*-
	.line	10
;>>>> 		UpTemp = UpTemp>>9;
	RSXM
	LAC	*+,7,AR0
	SACH	*,AR2
	SSXM
	LAC	*-,7,AR0
	OR	*,AR2
	SACL	*+
	SACH	*-
	.line	11
;>>>> 	    Up = (int)UpTemp;
;>>>> 	    // Compute the integral output
	LAC	*-
	SACL	*+
	.line	14
;>>>> 		UiTemp = ((long)(v->k1_reg2))*UpTemp;
	ZALS	*+
	ADDH	* ,AR1
	SACL	*+
	SACH	*+
	SACL	*+,AR3
	SBRK	3
	LAC	* ,AR1
	MAR	*-
	CALL	L$$MPY
	MAR	* ,AR2
	MAR	*+
	SACL	*+
	SACH	*-
	.line	15
;>>>> 		UiTemp = UiTemp>>13;
	RSXM
	LAC	*+,3,AR0
	SACH	*,AR2
	SSXM
	LAC	*-,3,AR0
	OR	*,AR2
	SACL	*+
	SACH	* ,AR3
	.line	16
;>>>> 	    v->un_reg2 = v->un_reg2 + (int)UiTemp + (int)(((long)(v->kc_reg2)*(long)(v->upi_reg2))>>13);
;>>>> 	    // Compute the derivative output
;>>>> 	    //v->Ud = (int)((long)((v->Kd)*(v->Up - v->Up1))>>13);
;>>>> 	    // Compute the pre-saturated output
;>>>> 	    //v->OutPreSat = v->Up + v->Ui + v->Ud;
	ADRK	4
	LT	* ,AR4
	ADRK	2
	MPY	* ,AR2
	MAR	*+
	SPL	*+
	SPH	*-
	RSXM
	LAC	*+,3,AR0
	SACH	*,AR2
	SSXM
	LAC	* ,3,AR0
	OR	*,AR1
	SACL	*+,AR3
	SBRK	2
	LAC	* ,AR2
	SBRK	3
	ADD	* ,AR1
	MAR	*-
	ADD	* ,AR3
	SACL	* 
	.line	23
;>>>> 		v->epi_reg2 = Up + v->un_reg2;
;>>>> 	    // Saturate the output
	LAC	* ,AR2
	SBRK	3
	ADD	* ,AR3
	ADRK	3
	SACL	* ,AR4
	.line	25
;>>>> 	    if (v->epi_reg2 > v->max_reg2)
	ADRK	4
	LAC	* ,AR3
	MAR	*+
	SUB	* 
	BLEZ	L1
	.line	26
;>>>> 	      v->out_reg2 =  v->max_reg2;
	LAC	* ,AR4
	ADRK	3
	SACL	* 
	B	L2
L1:
	.line	27
;>>>> 	    else if (v->epi_reg2 < v->min_reg2)
	MAR	*+,AR4
	LAC	* ,AR3
	SUB	* 
	BGEZ	L3
	.line	28
;>>>> 	      v->out_reg2 =  v->min_reg2;
;>>>> 	    else
	LAC	* ,AR4
	ADRK	3
	SACL	* 
	B	L2
L3:
	.line	30
;>>>> 	      v->out_reg2 = v->epi_reg2;
;>>>> 	    // Compute the saturate difference
	SBRK	2
	LAC	* ,AR4
	ADRK	3
	SACL	* 
L2:
	.line	33
;>>>> 	    v->upi_reg2 = v->out_reg2 - v->epi_reg2;
;>>>> 	    // Update the previous proportional output
;>>>> 	    //v->Up1 = v->Up; 
	MAR	* ,AR2
	SBRK	4-LF1
	LAR	AR3,* ,AR3
	ADRK	11
	LAC	* ,AR4
	SBRK	3
	SUB	* ,AR3
	SBRK	4
	SACL	* ,AR1
EPI0_1:
	.line	38
	SBRK	9
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	47,000000000H,8
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	L$$MPY
	.end

⌨️ 快捷键说明

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