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

📄 clarke.asm

📁 师姐给我留下的项目的源代码
💻 ASM
字号:
;=====================================================================
; 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 + -