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

📄 aci_mras.asm

📁 TI的digital motor control lib的源代码。了解TI的编程规范
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;----------------------------------------------------------------------------------
      	SACH	*,1		; FR2 = tmp4 = K6*wr_hat_mras (Q15)
      					; ARP=AR0, AR0->FR2, AR2->ualfa_mras, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		SBRK	#2		; ARP=AR0, AR0->FR0, AR2->ualfa_mras, AR3->wr_hat_mras 		
;----------------------------------------------------------------------------------
		LACC	*,AR2	; ACC = tmp1_high
						; ARP=AR0, AR0->FR0, AR2->ualfa_mras, AR3->wr_hat_mras, ARP=AR2 
;----------------------------------------------------------------------------------
		ADRK	#6		; ARP=AR2, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	XOR		*,AR0	; ARP=AR2, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0 
;----------------------------------------------------------------------------------
		ADRK	#3		; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
     	SACL	*		; FR3 = sign1 (0=+,1=-) for tmp1*imalfa(k-1)
     					; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
     	SBRK	#3		; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	LACC	*,AR2	; ACC = tmp1_high
      					; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2 
;----------------------------------------------------------------------------------
		ADRK	#2		; ARP=AR2, AR0->FR0, AR2->imbeta_old_high, AR3->wr_hat_mras       	
;----------------------------------------------------------------------------------
		XOR		*,AR0	; ARP=AR2, AR0->FR0, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0 
;----------------------------------------------------------------------------------
		ADRK	#4		; ARP=AR0, AR0->FR4, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SACL	*		; FR4 = sign2 (0=+,1=-) for tmp1*imbeta(k-1)
     					; ARP=AR0, AR0->FR4, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
     	SBRK	#2		; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
		LACC	*,AR2	; ACC = tmp4
						; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
		SBRK	#2		; ARP=AR2, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		XOR		*,AR0	; ARP=AR2, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
		ADRK	#3		; ARP=AR0, AR0->FR5, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SACL	*		; FR5 = sign3 (0=+,1=-) for tmp4*imalfa(k-1)
     					; ARP=AR0, AR0->FR5, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		SBRK	#5		; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
     	LACC	*+,16	; ACC high = tmp1_high
     					; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras  
;----------------------------------------------------------------------------------
		ADDS	*		; ACC low = tmp1_low
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
      	ABS				; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SACL	*-		; FR1 = tmp1_low = ACC low
       					; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SACH	*+,AR2	; FR0 = tmp1_high = ACC high
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
		LACC	*+,16	; ACC high = imalfa_old_high 
						; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
       	ADDS	*		; ACC low = imalfa_old_low
       					; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
      	ABS				; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SACL	*-		; imalfa_old_low = ACC low
       					; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
       	SACH	*+		; imalfa_old_high = ACC high
       					; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
      	LT		*-,AR0	; TREG = imalfa_old_low
      					; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
		MPYU	*		; PREG = imalfa_old_low*tmp1_low
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras	 
;----------------------------------------------------------------------------------
		ADRK	#5		; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
      	SPH		*		; FR6 = tmp5 = PREG high (save parital result)
      					; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SBRK	#6		; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		MPYU	*+,AR2	; PREG = imalfa_old_low*tmp1_high
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
		LTP		*,AR0	; TREG = imalfa_old_high, ACC = PREG
						; ARP=AR2, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR0 
;----------------------------------------------------------------------------------
		MPYU	*		; PREG = imalfa_old_high*tmp1_low
						; ARP=AR0, AR0->FR1, AR2->imalfa_old_high, AR3->wr_hat_mras 		
;----------------------------------------------------------------------------------
		ADRK	#5		; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
     	ADDS 	*		; ACC = imalfa_old_low*tmp1_high + tmp5
     					; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
     	SBRK	#6		; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	MPYA	*		; ACC = ACC + PREG old, PREG new = imalfa_old_high*tmp1_high 
       					; ARP=AR0, AR0->FR0, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		ADRK	#6		; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras		      	
;----------------------------------------------------------------------------------
		SACH	*+		; FR6 = tmp5 = ACC high
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras 	 
;----------------------------------------------------------------------------------
		SPLK	#1h,*	; FR7 = tmp2_low = 1 (carry bit)
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras  
;----------------------------------------------------------------------------------
     	BCND	NO_C1,NC ; Carry bit = 0 ?
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
      	B		CHECK1	; Branch to CHECK1 if carry bit = 1
      					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
NO_C1                  	; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
     	SPLK	#0h,*	; FR7 = tmp2_low = 0 (no carry bit)
     					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
CHECK1       	        ; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
       	PAC				; ACC = imalfa_old_high*tmp1_high
       					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
		SBRK	#1		; ARP=AR0, AR0->FR6, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		ADDS	*+		; ACC = imalfa_old_high*tmp1_high + tmp5
       					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
		ADDH	*+		; ACC = imalfa_old_high*tmp1_high + tmp5 + tmp2_low
       					; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras	
;----------------------------------------------------------------------------------
		SACH	*-,1 	; FR8 = tmp2_high = ACC high (Q31)
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	SACL	*,1 	; FR7 = tmp2_low = ACC low (Q31)
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
      	SBRK	#4		; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		LACC	*-		; ACC = sign1
						; ARP=AR0, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras                                      
;----------------------------------------------------------------------------------
    	ADRK	#6		; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
      	BCND	DONE1,GT ; Check sign1 = positive ?
      					; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
		LACC	*-,16	; ACC high = tmp2_high
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
       	ADDS	*		; ACC low = tmp2_low
       					; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		NEG				; Make the result negative
						; ARP=AR0, AR0->FR7, AR2->imalfa_old_high, AR3->wr_hat_mras 
;----------------------------------------------------------------------------------
    	SACL	*+		; FR7 = tmp2_low = ACC low
    					; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
      	SACH	*		; FR8 = tmp2_high = ACC high
      					; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
DONE1		            ; ARP=AR0, AR0->FR8, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		SBRK	#6		; ARP=AR0, AR0->FR2, AR2->imalfa_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		LACC	*+,AR2	; ACC = tmp4
						; ARP=AR0, AR0->FR3, AR2->imalfa_old_high, AR3->wr_hat_mras, ARP=AR2 
;----------------------------------------------------------------------------------
		ADRK	#2		; ARP=AR2, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
		XOR		*,AR0	; ARP=AR2, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
		SACL	*-		; FR3 = sign1 (0=+,1=-) for tmp4*imbeta(k-1)
						; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras 	
;----------------------------------------------------------------------------------
		LACC	*		; ACC = tmp4
						; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras     	
;----------------------------------------------------------------------------------
       	ABS				; ACC = |tmp4|
       					; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras   
;----------------------------------------------------------------------------------
      	SACL	*,AR2	; FR2 = tmp4 = ACC low
      					; ARP=AR0, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------

⌨️ 快捷键说明

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