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

📄 volt_cal.asm

📁 变频器程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;----------------------------------------------------------------------------------
		SPLK	#10923,* ; FR0 = 1/3
						; ARP=AR0, AR0->FR0, AR2->Mfunc_V1		
;----------------------------------------------------------------------------------
		LT		*,AR2	; TREG = 1/3
						; ARP=AR0, AR0->FR0, AR2->Mfunc_V1, ARP=AR2 								
;----------------------------------------------------------------------------------
 		MPY		*+		; PREG = Mfunc_V1/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 		
;----------------------------------------------------------------------------------
       	PAC				; ACC = Mfunc_V1/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 		 
;----------------------------------------------------------------------------------
		SFL				; ACC = 2*Mfunc_V1/3
		                ; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 	
;----------------------------------------------------------------------------------
		MPY		*+		; PREG = Mfunc_V2/3 
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V3 			
;----------------------------------------------------------------------------------
		SPAC			; ACC = 2*Mfunc_V1/3 - Mfunc_V2/3 
		                ; ARP=AR2, AR0->FR0, AR2->Mfunc_V3 	 
;----------------------------------------------------------------------------------
		MPY		*+		; PREG = Mfunc_V3/3 
 						; ARP=AR2, AR0->FR0, AR2->Vphase_A 		 
;----------------------------------------------------------------------------------
    	SPAC			; ACC = 2*Mfunc_V1/3 - Mfunc_V2/3 - Mfunc_V3/3 
		                ; ARP=AR2, AR0->FR0, AR2->Vphase_A 	  
;----------------------------------------------------------------------------------
		SACH	*+,1	; Vphase_A = 2*Mfunc_V1/3 - Mfunc_V2/3 - Mfunc_V3/3  
						; ARP=AR2, AR0->FR0, AR2->Vphase_B 
;----------------------------------------------------------------------------------
		ADRK	#2		; ARP=AR2, AR0->FR0, AR2->Vdirect 
;----------------------------------------------------------------------------------
		SACH	*,1		; Vdirect = Vphase_A  
						; ARP=AR2, AR0->FR0, AR2->Vdirect 
;----------------------------------------------------------------------------------
 		SBRK	#5		; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 	   		
;----------------------------------------------------------------------------------
		MPY		*-		; PREG = Mfunc_V2/3 
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V1 			 
;----------------------------------------------------------------------------------
       	PAC				; ACC = Mfunc_V2/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V1 		 
;----------------------------------------------------------------------------------
		SFL				; ACC = 2*Mfunc_V2/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V1 		  
;----------------------------------------------------------------------------------
		MPY		*+		; PREG = Mfunc_V1/3
		                ; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 
;----------------------------------------------------------------------------------
		SPAC			; ACC = 2*Mfunc_V2/3 - Mfunc_V1/3 
		                ; ARP=AR2, AR0->FR0, AR2->Mfunc_V2	   
;----------------------------------------------------------------------------------
		ADRK	#1		; ARP=AR2, AR0->FR0, AR2->Mfunc_V3 
;----------------------------------------------------------------------------------
		MPY		*+		; PREG = Mfunc_V3/3
		                ; ARP=AR2, AR0->FR0, AR2->Vphase_A 
;----------------------------------------------------------------------------------
		SPAC			; ACC = 2*Mfunc_V2/3 - Mfunc_V1/3 - Mfunc_V3/3
		                ; ARP=AR2, AR0->FR0, AR2->Vphase_A	   
;----------------------------------------------------------------------------------
		ADRK 	#1		; ARP=AR2, AR0->FR0, AR2->Vphase_B 
;----------------------------------------------------------------------------------
		SACH	*-,1	; Vphase_B = 2*Mfunc_V2/3 - Mfunc_V1/3 - Mfunc_V3/3  
						; ARP=AR2, AR0->FR0, AR2->Vphase_A 
;----------------------------------------------------------------------------------
		SBRK	#1		; ARP=AR2, AR0->FR0, AR2->Mfunc_V3  
;----------------------------------------------------------------------------------
		MPY		*-		; PREG = Mfunc_V3/3 
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 			 
;----------------------------------------------------------------------------------
       	PAC				; ACC = Mfunc_V3/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 		 
;----------------------------------------------------------------------------------
		SFL				; ACC = 2*Mfunc_V3/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 		  
;----------------------------------------------------------------------------------
		MPY		*-		; PREG = Mfunc_V2/3 
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V1 			 
;----------------------------------------------------------------------------------
       	SPAC			; ACC = 2*Mfunc_V3/3 - Mfunc_V2/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V1 		 
;----------------------------------------------------------------------------------
		MPY		*+		; PREG = Mfunc_V1/3 
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 			 
;----------------------------------------------------------------------------------
       	SPAC			; ACC = 2*Mfunc_V3/3 - Mfunc_V2/3 - Mfunc_V1/3
 						; ARP=AR2, AR0->FR0, AR2->Mfunc_V2 		 
;----------------------------------------------------------------------------------
        ADRK	#4   	; ARP=AR2, AR0->FR0, AR2->Vphase_C
;----------------------------------------------------------------------------------
		SACH	*+,1,AR0 ; Vphase_C = 2*Mfunc_V3/3 - Mfunc_V2/3 - Mfunc_V1/3  
						; ARP=AR2, AR0->FR0, AR2->Vdirect, ARP=AR0 
;----------------------------------------------------------------------------------
		SPLK	#18919,* ; FR0 = 1/sqrt(3)
						; ARP=AR0, AR0->FR0, AR2->Vdirect		
;----------------------------------------------------------------------------------
		LT		*,AR2	; TREG = 1/sqrt(3)
						; ARP=AR0, AR0->FR0, AR2->Vdirect, ARP=AR2
;----------------------------------------------------------------------------------
		SBRK	#3		; ARP=AR2, AR0->FR0, AR2->Vphase_A 
;----------------------------------------------------------------------------------		
		LACC	*+		; ACC = Vphase_A	
                        ; ARP=AR2, AR0->FR0, AR2->Vphase_B
;----------------------------------------------------------------------------------
		SFR				; ACC = Vphase_A/2
		                ; ARP=AR2, AR0->FR0, AR2->Vphase_B
;----------------------------------------------------------------------------------
		ADD		*+		; ACC = Vphase_A/2 + Vphase_B
		                ; ARP=AR2, AR0->FR0, AR2->Vphase_C
;----------------------------------------------------------------------------------
		ADRK	#2		; ARP=AR2, AR0->FR0, AR2->Vquadra
;----------------------------------------------------------------------------------
		SACL	*		; Vquadra = Vphase_A/2 + Vphase_B
		                ; ARP=AR2, AR0->FR0, AR2->Vquadra
;----------------------------------------------------------------------------------
		MPY		*		; PREG = (Vphase_A/2 + Vphase_B)/sqrt(3)
		                ; ARP=AR2, AR0->FR0, AR2->Vquadra
;----------------------------------------------------------------------------------
		PAC				; ACC = (Vphase_A/2 + Vphase_B)/sqrt(3)
		                ; ARP=AR2, AR0->FR0, AR2->Vquadra 	
;----------------------------------------------------------------------------------
  		SFL				; ACC = (Vphase_A + 2*Vphase_B)/sqrt(3) 
  						; ARP=AR2, AR0->FR0, AR2->Vquadra 	
;----------------------------------------------------------------------------------
        SACH	*,1,AR1	; Vquadra = (Vphase_A + 2*Vphase_B)/sqrt(3)
                        ; ARP=AR2, AR0->FR0, AR2->Vquadra, ARP=AR1 
;----------------------------------------------------------------------------------
_phase_voltage_calc_exit:
       	;MAR     *,AR1   ; can be removed if this condition is met on
       	;                ; every path to this code. (i.e., ARP=AR1 here)

        CLRC	OVM
        CLRC	SXM

        SBRK 	#(__phase_voltage_calc_framesize+1)
        LAR  	AR0,*-
        PSHD	*
        
        RET



⌨️ 快捷键说明

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