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

📄 clarke.asm.txt

📁 此源码事有关DSP编程用的
💻 TXT
字号:
;=====================================================================
; 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
;					clark_d = clark_a
;					clark_q = (2 * clark_b + clark_b) / sqrt(3)
;
;					|~~~~~~~~~~~~~~~|
; clark_a  o----->|		     	|----->o  clark_d
; clark_b  o----->|     CLARKE    	|
; clark_c* o----->|		     	|----->o  clark_q
;					|_______________|
;
;=====================================================================
;(To use this Module, copy this section to main system file)
;		.ref	CLARKE, CLARKE_INIT			; function call
;		.ref	clark_a, clark_b			; Inputs
;		.ref	clark_d, clark_q			; Outputs
;=====================================================================
;Module definitions for external reference.
		.def	CLARKE, CLARKE_INIT		; function call
		.def	clark_a, clark_b			; Inputs
		.def	clark_d, clark_q			; Outputs
;=====================================================================
			.include "x24x_app.h"

; Variables     
clark_a	.usect "clarke",1
clark_b	.usect "clarke",1
clark_d	.usect "clarke",1
clark_q	.usect "clarke",1
sqrt3inv	.usect "clarke",1		; 1/sqrt(3)
clk_temp	.usect "clarke",1
 
;=========================
CLARKE_INIT:	  
;=========================
; sqrt3inv = (1/sqrt(3))=0.577350269
		ldp		#sqrt3inv
		SPLK 	#018830,sqrt3inv	; 1/sqrt(3) (Q15)
		RET
   
;=========================
CLARKE:	  
;=========================
		SPM	1						; Set SPM for Q15 math
		SETC	SXM					; Sign extension mode on

;clark_d = clark_a
		ldp		#clark_a
		LACC	clark_a				; ACC = clark_a
		SACL	clark_d				; clark_d = clark_a
                                    
;clark_q = (2 * clark_b + clark_a) / sqrt(3)
		SFR							; ACC = clark_a/2
		ADD		clark_b				; ACC = clark_a/2 + clark_b
		SACL	clk_temp			; clk_temp = clark_a/2 + clark_b
		LT		clk_temp			; TREG = clark_a/2 + clark_b
		MPY		sqrt3inv			; PREG = (clark_a/2 + 
;clark_b)*(1/sqrt(3))
		PAC							; ACC =  (clark_a/2 + 
;clark_b)*(1/sqrt(3))
    	SFL							; ACC =  (clark_a + 
;clark_b*2)*(1/sqrt(3))
		SACH	clark_q				; clark_q = (clark_a + 
;clark_b*2)*(1/sqrt(3))
    	SPM		0					; SPM reset
		RET

⌨️ 快捷键说明

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