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

📄 clarke.asm.bak

📁 关于整流器的程序.这个程序是在TI的DSP上实现
💻 BAK
字号:
;=====================================================================
; Filename	:	clarke.asm
; Module Name	: 	CLARKE
; Initialization Routine: CLARKE_INIT
; Description	:	Converts balanced three phase quantities into balanced 
;					two phase quadrature quantities.
;					(a,b,c) -> (d,q) Transformation
;					i_alfa = i_a
;					i_beta = (2 * i_b + i_a) / sqrt(3)
;
;				  |~~~~~~~~~~~~~~~|
;                     i_a  o----->|               |----->o  i_alfa
;                     i_b  o----->|     CLARKE    |
;                     i_c* o----->|     	  |----->o  i_beta
;				  |_______________|
;
;=====================================================================

;=====================================================================
;Module definitions for external reference.
		.def	CLARKE, CLARKE_INIT	    ; function call
		.def	i_a, i_b		    ; Inputs
		.def	i_alfa, i_beta		    ; Outputs
;=====================================================================
		.include "F2407REGS.H"

; Variables     
i_a		.usect "clarke",1
i_b		.usect "clarke",1
i_alfa		.usect "clarke",1
i_beta		.usect "clarke",1
sqrt3inv	.usect "clarke",1	; 1/sqrt(3)
clk_temp	.usect "clarke",1
 
;=========================
; CLARKE_INIT
; sqrt3inv = (1/sqrt(3))=0.57735026918962576450914878050196	  
;=========================

CLARKE_INIT:
    NOP
	LDP   #sqrt3inv
	SPLK  #49E6H,sqrt3inv		; 1/sqrt(3) (Q15)
	RET
   
;=========================
;CLARKE CONVERTOR	  
;=========================
CLARKE:
	SPM	  1			; Set SPM for Q15 math
	SETC  SXM			; Sign extension mode on

        i_alfa = i_a
	LDP   #i_a
	LACC  i_a,16	    		; ACC = i_a
	SACH  i_alfa			; i_alfa = i_a
                                    
        i_beta = (2 * i_b + i_a) / sqrt(3)
	SFR				; ACC = i_a/2 
	ADD	  i_b,16	    	; ACC = i_a/2 + i_b
	SACH      clk_temp		; clk_temp = i_a/2 + i_b
	LT	  clk_temp		; TREG = i_a/2 + i_b
	MPY	  sqrt3inv		; PREG = (i_a/2 + i_b)*(1/sqrt(3))
	PAC				; ACC =  (i_a/2 + i_b)*(1/sqrt(3))
        SFL				; ACC =  (i_a + i_b*2)*(1/sqrt(3))
	SACH  i_beta,1			; i_beta = (i_a + i_b*2)*(1/sqrt(3))
    
	RET


⌨️ 快捷键说明

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