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

📄 sys_cur.asm

📁 此源代码用于电力电子逆变器的同步锁相实现
💻 ASM
字号:
;=======================================================================
; File Name:	sys_cur.asm			      
;
; Module Name: 	system current regulation	
;
; Initialization Routine: SYS_CURRENT_INIT
;
; Description:
;
;	
;			ipa=ipa_old*0.8333+0.8333*(iap-iap_old)*1.7
;			ipb=ipb_old*0.8333+0.8333*(ibp-ibp_old)*1.7				
;     		ia_total=ipa+ipla
;			ib_total=ipb+iplb
;	
;
; Target dependency:	C2xx core only
;
;
;=====================================================================================
;Module definitions for external reference.
;		.ref	sys_cur, sys_cur_init		;function call
;		.ref iap,ibp,ipla,iplb        ;inputs
;		.ref ia_total,ib_total        ;outputs
;=======================================================================
;Module definitions for external reference.
		.def  SYS_CUR,SYS_CUR_INIT		 ;function call
		.def  iap,ibp,ipla,iplb				 ;inputs
		.def  ia_total,ib_total        ;outputs
;=======================================================================
		.include "x24x_app.h"

; Variables     
ipa		  	.usect "sys_cur",1
ipb		  	.usect "sys_cur",1 
iap         .usect "sys_cur",1
ibp         .usect "sys_cur",1 
ipla        .usect "sys_cur",1
iplb        .usect "sys_cur",1
iap_old		.usect "sys_cur",1    			
ibp_old		.usect "sys_cur",1
ipa_old 	.usect "sys_cur",1
ipb_old  	.usect "sys_cur",1  
is_err      .usect "sys_cur",1
ia_total    .usect "sys_cur",1
ib_total    .usect "sys_cur",1
klp         .usect "sys_cur",1
klq         .usect "sys_cur",1
;=========================
SYS_CUR_INIT:	  
;=========================
		ldp		#ipa
		SPLK 	#0,ipa   		; 
		SPLK  	#0,ipb          ;
		SPLK 	#0,ipa_old  	;
		SPLK 	#0,ipb_old  	;
		SPLK 	#0,iap    		;		
		SPLK 	#0,ibp    		;	
		SPLK 	#0,iap_old 		;		
		SPLK 	#0,ibp_old 		;		
		SPLK 	#0,is_err	  	;
		SPLK	#27304,klp		;Q15
	;	SPLK    #27852,klq      ;Q14	1.7
		SPLK	#30000,klq
		SPLK  	#0,ipla         ;
		SPLK  	#0,iplb			;
		RET
   
;=========================
SYS_CUR:	  
;=========================
		SPM			1			; Set SPM for Q15 math
		SETC		SXM         ; Sign extension mode on    
		SETC		OVM         ; Set  overflow mode
		LDP         #iap
        LACC		iap         ; Q15
        SUB			iap_old     ; Q15
    	SACL        is_err      ;Store error(Q15)
    							;is_err=iap-iap_old
    	LACC		iap
    	SACL		iap_old     ;store new old value of iap
    	LT 			is_err      ;Q15
    	MPY			klp         ;Q15
    	PAC                     ;ACC <--klp*is_err, Q31 
    	SACH		is_err      ;Q15
    	LT			is_err      ;new value
    	MPY			klq         ;Q14
   	 	PAC                     ;ACC <--klq*is_err, Q30
    	MPY			klq         ;
       	LTA			ipa_old     ;ACC <-- ACC + klq*is_err, Q31 
       	                        ;treg<-- ipa_old
    	MPY			klp         ;Q15
    	APAC			        ;
     	SACH		ipa         ;Q15
    	SACH		ipa_old     ;store new old value of ipa
    
    	LACC		ipa         ;Q15
    	ADD 		ipla        ;Q15
    	SACL		ia_total    ;Q15
	   		
 		LACC		ibp         ;Q15
   	 	SUB			ibp_old     ;Q15
    	SACL        is_err      ;Store error(Q15)
    	LACC		ibp
    	SACL		ibp_old     ;store new old value of ibp
    	LT 			is_err      ;new value
    	MPY			klp         ;Q15
    	PAC                     ;ACC <--klp*is_err, Q31
    	SACH		is_err      ;Q15
    	LT			is_err      ;new value
    	MPY			klq         ;Q14
    	PAC                     ;ACC <--klq*is_err, Q30
    	MPY			klq         ;
    	LTA			ipb_old     ;ACC <-- ACC + klq*is_err, Q31 
       	                        ;treg<-- ipb_old
    	MPY			klp         ;Q15
    	APAC			
       	SACH		ipb         ;Q15
    	SACH		ipb_old     ;store new old value of ipb
    	LACC		ipb         ;Q15
    	ADD 		iplb        ;Q15
    	SACL 		ib_total    ;Q15
    
 		SPM		0           ; SPM reset
 		CLRC	SXM
 		CLRC    OVM
		RET
	

	

⌨️ 快捷键说明

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