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

📄 qep.asm

📁 DSP部分功能测试 串口
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include qep.c C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\qep.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\qep.if C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\qep.asm C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\qep.tmp 
	.port
	.bss	_autoUp_flag,1,1
	.bss	_counter1,2,1
	.bss	_auto_qubai,1
	.file	"qep.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"qep.c"
	.globl	_QEPINIT
	.globl	_clearqep
	.globl	_AutoUp
	.globl	_SetQep
	.globl	_pc_fangbai
	.globl	_MaxerQep
	.globl	_Encode_counter
	.globl	_uiAutoUpPara1
	.globl	_uiAutoUpPara2
	.globl	_uiAutoUpPara3
	.globl	_uiAutoUpPara4
	.globl	_counter1
	.globl	_Maxest_counter
	.globl	_Maxer_counter
	.globl	_auto_qubai
	.globl	_autoUp_flag
	.text

	.sym	_QEPINIT,_QEPINIT,32,2,0
	.globl	_QEPINIT

	.func	27
;>>>> 	void QEPINIT()
******************************************************
* FUNCTION DEF : _QEPINIT
******************************************************
_QEPINIT:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		*T2PR = 0x0ffff;    //T2's T is 0Xffff
	LARK	AR3,29703
	SPLK	#65535,*+
	.line	4
;>>>> 		*T2CON = 0x1870;     //T2 +/- source from Encode
	SPLK	#6256,* 
	.line	5
;>>>> 		*T2CNT = 0x0;        //clr T2
	LACK	0
	SBRK	3
	SACL	* ,AR0
	.line	6
;>>>> 		WSGR = 0x0000;
	SACL	* 
	OUT	* ,0ffffh,AR3
	.line	7
;>>>> 		*CAPCONA = 0x0E000;
	ADRK	27
	SPLK	#57344,* ,AR1
EPI0_1:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	34,000000000H,1

	.sym	_ClearQep,_ClearQep,32,2,0
	.globl	_ClearQep

	.func	39
;>>>> 	void ClearQep()
******************************************************
* FUNCTION DEF : _ClearQep
******************************************************
_ClearQep:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		*T2PR = 0x0ffff;    //T2's T is 0Xffff
	LARK	AR3,29703
	SPLK	#65535,*+
	.line	4
;>>>> 		*T2CON = 0x1870;     //T2 +/- source from Encode
	SPLK	#6256,* 
	.line	5
;>>>> 		*T2CNT = 0x0;        //clr T2
	LACK	0
	SBRK	3
	SACL	* 
	.line	6
;>>>> 		*CAPCONA = 0x0E000;
	ADRK	27
	SPLK	#57344,* ,AR1
	.line	7
;>>>> 		Maxest_counter = 0;
	LDPK	_Maxest_counter
	SACL	_Maxest_counter
	SACH	_Maxest_counter+1
EPI0_2:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	46,000000000H,1

	.sym	_SetQep,_SetQep,32,2,0
	.globl	_SetQep

	.func	51
;>>>> 	void SetQep(unsigned int uiangle)
******************************************************
* FUNCTION DEF : _SetQep
******************************************************
_SetQep:

LF3	.set	0

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

	.sym	_uiangle,-3+LF3,14,9,16
	.line	2
	.line	3
;>>>> 		*T2CNT = ~uiangle + 1;        //clr T2
;>>>> 	//	*CAPCONA = 0x0E000;
	LARK	AR2,-3+LF3
	MAR	*0+
	LAC	* ,AR3
	CMPL
	ADDK	1
	LARK	AR3,29701
	SACL	* ,AR1
EPI0_3:
	.line	5
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	55,000000000H,1

	.sym	_MaxerQep,_MaxerQep,47,2,0
	.globl	_MaxerQep

	.func	60
;>>>> 	unsigned long MaxerQep()
;>>>> 		unsigned long maxest;
******************************************************
* FUNCTION DEF : _MaxerQep
******************************************************
_MaxerQep:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR2

	.sym	_maxest,1,15,1,32
	.line	4
;>>>> 		maxest = Maxer_counter;
	LARK	AR2,1
	MAR	*0+
	RPTK	1
	BLKD	#_Maxer_counter,*+
	.line	5
;>>>> 		if((Encode_counter & 0xffff) < 0x7fff)
	LDPK	_Encode_counter
	ZALS	_Encode_counter
	ANDK	65535
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	32767
	SPAC
	BNC	L1
	BZ	L1
	.line	7
;>>>> 			if(*T2CNT > Maxer_counter )
	LARK	AR3,29701
	MAR	* ,AR3
	ZALS	* 
	LDPK	_Maxer_counter
	LT	_Maxer_counter
	MPYK	1
	LPH	_Maxer_counter+1
	SPAC
	BNC	L2
	BZ	L2
	.line	8
;>>>> 				maxest = *T2CNT;
	ZALS	* ,AR2
	SBRK	3
	SACL	*+
	SACH	* 
L2:
	.line	9
;>>>> 			autoUp_flag=1;
	LACK	1
	LDPK	_autoUp_flag
	SACL	_autoUp_flag
	.line	10
;>>>> 			pc_fangbai = 0x0;
	LACK	0
	LDPK	_pc_fangbai
	SACL	_pc_fangbai
L1:
	.line	12
;>>>> 		Maxer_counter = maxest;
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	RPTK	1
	BLDD	*+,#_Maxer_counter
	.line	13
;>>>> 		return (maxest);
	SBRK	2
	ZALS	*+
	ADDH	* 
EPI0_4:
	.line	14
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	73,000000000H,5

	.sym	_AutoUp,_AutoUp,32,2,0
	.globl	_AutoUp

	.func	78
;>>>> 	void AutoUp()
;>>>> 		unsigned long counter2;
******************************************************
* FUNCTION DEF : _AutoUp
******************************************************
_AutoUp:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,7
	LAR	AR0,*0+,AR2

	.sym	_counter2,1,15,1,32
	.line	4
;>>>> 		counter2 = counter1;
	LARK	AR2,1
	MAR	*0+
	RPTK	1
	BLKD	#_counter1,*+
	.line	5
;>>>> 		counter1 = Encode_counter;
	LDPK	_Encode_counter
	ZALS	_Encode_counter
	ADDH	_Encode_counter+1
	LDPK	_counter1
	SACL	_counter1
	SACH	_counter1+1
	.line	6
;>>>> 		if((counter1 < counter2) && ((counter1 & 0x00ffff)>0x7fff))
	SBRK	2
	LT	*+
	MPYK	1
	LPH	* 
	ZALS	_counter1
	ADDH	_counter1+1
	SPAC
	BC	L3
	ZALS	_counter1
	ANDK	65535
	MAR	*+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	32767
	SPAC
	BC	L3
	.line	8
;>>>> 			if(counter1 > 0xff69)
	LT	_counter1
	MPYK	1
	LPH	_counter1+1
	RSXM
	LACK	65385
	SPAC
	BNC	L3
	.line	12
;>>>> 			else if(counter1>0xfb1d && counter1 < 0xff69)
	LT	_counter1
	MPYK	1
	LPH	_counter1+1
	LACK	64285
	SPAC
	BC	L6
	LT	_counter1
	MPYK	1
	LPH	_counter1+1
	LACK	65385
	SPAC
	BNC	L6
	BZ	L6
	.line	14
;>>>> 				if(((counter2-counter1) < (uiAutoUpPara2 * 4)) && ((counter2-counter1)>uiAutoUpPara1))
	LDPK	_uiAutoUpPara2
	LAC	_uiAutoUpPara2,2
	ANDK	0FFFFh
	MAR	*-
	SACL	*+
	SACH	* 
	SBRK	3
	ZALS	*+
	ADDH	*+
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BC	L3
	LDPK	_uiAutoUpPara1
	ZALS	_uiAutoUpPara1
	MAR	*+
	SACL	*+
	SACH	* 
	SBRK	5
	ZALS	*+
	ADDH	* 
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	ADRK	3
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BNC	L3
	BZ	L3
	.line	16
;>>>> 					auto_qubai = 0x1;
	LACK	1
	SACL	_auto_qubai
	B	L3
L6:
	.line	19
;>>>> 			else if(Encode_counter>0xf159)
	LDPK	_Encode_counter
	LT	_Encode_counter
	MPYK	1
	LPH	_Encode_counter+1
	LACK	61785
	SPAC
	BC	L8
	.line	21
;>>>> 				if(((counter2-counter1)<(uiAutoUpPara3* 4)) && ((counter2-counter1)>uiAutoUpPara1))
	LDPK	_uiAutoUpPara3
	LAC	_uiAutoUpPara3,2
	ANDK	0FFFFh
	MAR	*-
	SACL	*+
	SACH	* 
	SBRK	3
	ZALS	*+
	ADDH	*+
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BC	L3
	LDPK	_uiAutoUpPara1
	ZALS	_uiAutoUpPara1
	MAR	*+
	SACL	*+
	SACH	* 
	SBRK	5
	ZALS	*+
	ADDH	* 
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	ADRK	3
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BNC	L3
	BZ	L3
	.line	23
;>>>> 					auto_qubai = 0x1;
;>>>> 			else 
	LACK	1
	SACL	_auto_qubai
	B	L3
L8:
	.line	28
;>>>> 				if(((counter2-counter1)<(uiAutoUpPara4* 4)) && ((counter2-counter1)>uiAutoUpPara1))
	LDPK	_uiAutoUpPara4
	LAC	_uiAutoUpPara4,2
	ANDK	0FFFFh
	MAR	*-
	SACL	*+
	SACH	* 
	SBRK	3
	ZALS	*+
	ADDH	*+
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BC	L3
	LDPK	_uiAutoUpPara1
	ZALS	_uiAutoUpPara1
	MAR	*+
	SACL	*+
	SACH	* 
	SBRK	5
	ZALS	*+
	ADDH	* 
	LDPK	_counter1
	SUBS	_counter1
	SUBH	_counter1+1
	ADRK	3
	LT	*+
	MPYK	1
	LPH	* 
	SPAC
	BNC	L3
	BZ	L3
	.line	30
;>>>> 					auto_qubai = 0x1;
	LACK	1
	SACL	_auto_qubai
L3:
EPI0_5:
	.line	39
	MAR	* ,AR1
	SBRK	8
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	116,000000000H,7

	.sym	_autoUp_flag,_autoUp_flag,2,2,16
	.globl	_autoUp_flag

	.sym	_counter1,_counter1,15,2,32
	.globl	_counter1

	.sym	_auto_qubai,_auto_qubai,2,2,16
	.globl	_auto_qubai
	.end

⌨️ 快捷键说明

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