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

📄 aci_mras.asm

📁 TI的digital motor control lib的源代码。了解TI的编程规范
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   		LACC	*+,16	; ACC high = imbeta_old_high
   						; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
		ADDS	*		; ACC low = imbeta_old_low
						; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		ABS				; ACC = |imbeta(k-1)|
						; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
     	SACL	*-		; imbeta_old_low = ACC low
     					; ARP=AR2, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		SACH	*+,AR0	; imbeta_old_high = ACC high
						; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
		LT		*,AR2	; TREG = tmp4
						; ARP=AR0, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
		MPYU	*-,AR0	; PREG = imbeta_old_low*tmp4
						; ARP=AR2, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0	       		
;----------------------------------------------------------------------------------
		ADRK	#7		; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SPH		*,AR2	; FR9 = tmp3_low = PREG high
						; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
		MPYU	*,AR0	; PREG = imbeta_old_high*tmp4
						; ARP=AR2, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0      	
;----------------------------------------------------------------------------------
		PAC				; ACC = imbeta_old_high*tmp4
						; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras   
;----------------------------------------------------------------------------------
       	ADDS	*+		; ACC = imbeta_old_high*tmp4 + tmp3_low
						; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras  
;----------------------------------------------------------------------------------
		SACH	*-,1	; FR10 = tmp3_high = ACC high (Q31)
						; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SACL	*,1		; FR9 = tmp3_low = ACC low (Q31)
						; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SBRK	#6     	; ARP=AR0, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		LACC	*		; ACC = sign1
						; ARP=AR0, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		ADRK	#7		; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	BCND	DONE2,GT ; Check sign1 = positive ?
       					; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
      	LACC	*-,16	; ACC high = tmp3_high
      					; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	ADDS	*		; ACC low = tmp3_low
      					; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras  
;----------------------------------------------------------------------------------
      	NEG				; Make the result negative
      					; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	SACL	*+		; FR9 = tmp3_low = ACC low
      					; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
      	SACH	*		; FR10 = tmp3_high = ACC high
      					; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
DONE2					; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
 		SBRK	#2		; ARP=AR0, AR0->FR8, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		LACC	*-,16	; ACC high = tmp2_high
						; ARP=AR0, AR0->FR7, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	ADDS	*		; ACC low = tmp2_low
      					; ARP=AR0, AR0->FR7, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		ADRK	#2		; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
     	SUBS	*+		; ACC = tmp2_low - tmp3_low
     					; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SUBH	*		; ACC = tmp2_high - tmp3_high
						; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
     	SACH	*-		; FR10 = tmp3_high = ACC high
     					; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		SACL	*,AR3	; FR9 = tmp3_low = ACC low
     					; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR3 	
;----------------------------------------------------------------------------------
		SBRK	#5		; ARP=AR3, AR0->FR9, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
		LT		*,AR2	; TREG = K7   (Q15)
						; ARP=AR3, AR0->FR9, AR2->imbeta_old_high, AR3->K7, ARP=AR2 		
;----------------------------------------------------------------------------------
		SBRK	#6		; ARP=AR2, AR0->FR9, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
		MPY		*,AR0	; PREG = K7*ialfa_mras  (Q30)
						; ARP=AR2, AR0->FR9, AR2->ialfa_mras, AR3->K7, ARP=AR0  
;----------------------------------------------------------------------------------
       	PAC				; ACC = K7*ialfa_mras  (Q30)
						; ARP=AR0, AR0->FR9, AR2->ialfa_mras, AR3->K7  
;----------------------------------------------------------------------------------
		SFL				; ACC = K7*ialfa_mras (Q31)
						; ARP=AR0, AR0->FR9, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
		ADDS	*+		; ACC = K7*ialfa_mras + tmp3_low   (Q31)
						; ARP=AR0, AR0->FR10, AR2->ialfa_mras, AR3->K7 	      		
;----------------------------------------------------------------------------------
		ADDH	*,AR2	; ACC = K7*ialfa_mras + tmp3_high   (Q31)
						; ARP=AR0, AR0->FR10, AR2->ialfa_mras, AR3->K7, ARP=AR2
;----------------------------------------------------------------------------------
		ADRK	#9      ; ARP=AR2, AR0->FR10, AR2->imalfa_low, AR3->K7
;----------------------------------------------------------------------------------
		SACL	*-		; imalfa_low = ACC low (Q31)
						; ARP=AR2, AR0->FR10, AR2->imalfa_high, AR3->K7 
;----------------------------------------------------------------------------------
		SACH	*-		; imalfa_high = ACC high (Q31)
						; ARP=AR2, AR0->FR10, AR2->imbeta_old_low, AR3->K7 
;----------------------------------------------------------------------------------
IM_BETA					; ARP=AR2, AR0->FR10, AR2->imbeta_old_low, AR3->K7
;----------------------------------------------------------------------------------
		LT		*-,AR0	; TREG = imbeta_old_low
						; ARP=AR2, AR0->FR10, AR2->imbeta_old_high, AR3->K7, ARP=AR0
;----------------------------------------------------------------------------------
      	SBRK	#9 	    ; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
       	MPYU	*		; PREG = imbeta_old_low*tmp1_low
       					; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
       	ADRK	#5		; ARP=AR0, AR0->FR6, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
      	SPH		*		; FR6 = tmp5 = PREG high (save partial result)
      					; ARP=AR0, AR0->FR6, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
   		SBRK	#6		; ARP=AR0, AR0->FR0, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
      	MPYU	*+,AR2	; PREG = imbeta_old_low*tmp1_high
      					; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7, ARP=AR2
;----------------------------------------------------------------------------------
		LTP		*-,AR0	; TREG = imbeta_old_high, ACC = PREG
						; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->K7, ARP=AR0
;----------------------------------------------------------------------------------
		MPYU	*		; PREG = imbeta_old_high*tmp1_low (PREG old)
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_low, AR3->K7				
;----------------------------------------------------------------------------------
		ADRK	#5		; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
      	ADDS	*		; ACC = imbeta_old_low*tmp1_high + tmp5
      					; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7 
;----------------------------------------------------------------------------------
     	SBRK	#6		; ARP=AR0, AR0->FR0, AR2->imalfa_old_low, AR3->K7 	
;----------------------------------------------------------------------------------
       	MPYA	*		; ACC = ACC + PREG old, PREG = imbeta_old_high*tmp1_high
       					; ARP=AR0, AR0->FR0, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
      	ADRK	#6		; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
     	SACH	*+		; FR6 = tmp5 = ACC high
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7	
;----------------------------------------------------------------------------------
     	SPLK	#1h,*	; tmp2_low = 1 (carry bit)
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7		
;----------------------------------------------------------------------------------
      	BCND	NO_C2,NC ; Carry bit = 0 ?
      					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
     	B		CHECK2	; Branch to CHECK2 if carry bit = 1
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
NO_C2				    ; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7 	
;----------------------------------------------------------------------------------
 		SPLK	#0h,*	; tmp2_low = 0 (no carry bit)
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
CHECK2                  ; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
        PAC				; ACC = imbeta_old_high*tmp1_high
;----------------------------------------------------------------------------------
		SBRK	#1		; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
		ADDS	*+		; ACC = imbeta_old_high*tmp1_high + tmp5
       					; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7	
;----------------------------------------------------------------------------------
		ADDH	*+		; ACC = imbeta_old_high*tmp1_high + tmp5 + tmp2_low
       					; ARP=AR0, AR0->FR8, AR2->imalfa_old_low, AR3->K7	
;----------------------------------------------------------------------------------
		SACH	*-,1 	; FR8 = tmp2_high = ACC high (Q31)
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
       	SACL	*,1 	; FR7 = tmp2_low = ACC low (Q31)
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
      	SBRK	#3		; ARP=AR0, AR0->FR4, AR2->imalfa_old_low, AR3->K7 

⌨️ 快捷键说明

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