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

📄 main.asm

📁 此源代码用于电力电子逆变器的同步锁相实现
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;=========================================================================================
; System Name:	ACTIVE POWER FILTER 
;
; File Name:	MAIN.ASM 
;
; Description:This program implements closed loop control of 
;			ACTIVE POWER FILTER WITH 4-ORDER DIGITER FILTER
;					
;
; Originator:	ZHENG WEWNBING
;			NANJING ELECTRIC POWER AUTOMATION EQUIPMENT GENERAL FACTORY
;
; Target Device:F240, F243, F2407
; To Select the target device see x24x_app.h file.
;-----------------------------------------------------------------------------
; External references
;-----------------------------------------------------------------------------
		.include	"x24x_app.h"
		.global MON_RT_CNFG   
;		
 		.ref	SYS_INIT   
;system current model  		
		.ref	SYS_CUR,SYS_CUR_INIT		;function call
		.ref    iap,ibp,ipla,iplb        ;inputs
		.ref    ia_total,ib_total        ;outputs
;		
		.ref	CLARKE, CLARKE_INIT		;function call
		.ref	clark_a, clark_b		;Inputs
		.ref	clark_d, clark_q		;Outputs 
		
;Module definitions for external reference.
		.ref	PARK, PARK_INIT					;function call
		.ref	park_d, park_q, theta_p			;Inputs
		.ref	park_D, park_Q					;Outputs 
		.ref	cos_theta,sin_theta
;
		.ref		IIR_BWT4, IIR_BWT4_INIT		;function call
		.ref		Xin_IIR				;Inputs
		.ref		Yout_IIR				;Outputs   
		
		.ref	I_PARK, I_PARK_INIT			;function call
		.ref	ipark_D, ipark_Q, theta_ip	;Inputs
		.ref	ipark_d, ipark_q			;Outputs  
		.ref	sin_theta1,cos_theta1 
		
   		.ref	I_CLARKE, I_CLARKE_INIT		 ;function call
		.ref	Iclark_d, Iclark_q			 ;Inputs
		.ref	Iclark_a, Iclark_b, Iclark_c ;Outputs
;                                                     
 		.ref 	CUR_CON_INIT,CUR_CON     ;function call
        .ref	DELTA_IA,DELTA_IB,DELTA_IC   ;Inputs
		.ref 	Ta,Tb,Tc                     ;Outputs 
		
		.ref	PID_REG2, PID_REG2_INIT			;function call
		.ref	pid_fb_reg2, pid_ref_reg2						;Inputs
		.ref	pid_out_reg2 				;Output
		.ref	pid_max_reg2, pid_min_reg2
		.ref	K0_reg2, K1_reg2, Kc_reg2
	    .ref	En0_reg2,Un_reg2
	    
		.ref		DATA_LOG, DATA_LOG_INIT		;function call
		.ref		input1,input2,input3,input4  
		
			.ref   DC_INIT
			.ref   DC_MAIN 
			.ref   DC_ref
			.ref   DC_zhi
;	        	
;on-chip ADC model 		
;-----------------------------------------------------------------------------
; Local Variable Declarations
;-----------------------------------------------------------------------------
		.def	GPR0			;General purpose registers.
		.def	GPR1
		.def	GPR2
		.def	GPR3
		.def	GPR4
        .def	COMCON 
        .def    U   
        .def	adc_sel 
        .def    theta
        .def   	isa  
        .def	isb
        .def   	ila
        .def   	ilb
        .def   	ia  
        .def	ib
        .def	ic
        .def   	idc
        .def   	Udc
        .def	iia
         .def	iib
         .def	iic   
         .def	pid_K  
         .def	iq     
         .def	wc       
         .def	iqq  
         .def	as         
         .def	qjia   
         .def	cishu       
         .def	WDPD
         .def	WDJS
         .def   jishu1
        
        .bss    jishu1                 
		.bss	GPR0,1		;General purpose registers.
		.bss	GPR1,1
		.bss	GPR2,1
		.bss	GPR3,1
		.bss	GPR4,1 
        .bss   	isa,1  
        .bss	isb,1 
        .bss   	ila,1
        .bss   	ilb,1
         
 
        .bss   	ia,1   
        .bss	ib,1 
        .bss	ic,1
        .bss   	idc,1
        .bss   	Udc,1 
        .bss	iia,1
         .bss	iib,1
         .bss	iic,1
        .bss   	U,1
        .bss   	theta,1  
        .bss	adc_sel,1       
        .bss	pid_K,1
        .bss	iq,1     
        .bss	wc,1   
        .bss	iqq,1 
        .bss	D,1
        .bss	Q,1   
         .bss	as,1 ;isa-Iclark_a
         .bss	qjia,1      
         .bss	qxishu,1 
         .bss	cishu,1
         .bss	WDJS,1
         .bss	WDPD,1    
         .bss	ling,1          
         .bss	ifcase,1   
         .bss	fuhao1,1
         .bss	cishu1,1  
         .bss	counter1,1    
         .bss	counter2,1
         
         
;Udc_ref		.set	2018;  50V DE CAN KAO DIAN YA
;Udc_ref			.set	2220;	55v DE CAN KAO DIAN YA  
;Udc_ref			.set	2613   ;	65v       
;Udc_ref			.set	2800  ;	70v  
;Udc_ref			.set	2000;50v      
;Udc_ref			.set	1200;30v       
;Udc_ref		.set	4000   ;100v
;Udc_ref			.set	1200   ;80V 
;Udc_ref			.set	2400       
;Udc_ref		.set	4800   ;120v   
;Udc_ref		.set	2100 
;Udc_ref		.set	2079     ;88V   
;Udc_ref		.set	1100    ; 9,20ri 50v  
;Udc_ref		.set	1200
;Udc_ref		.set	3150
;==============================================================================
; V E C T O R    T A B L E    ( including RT monitor traps )
;==============================================================================
 		.sect ".vectors"  
		.def 	_c_int0

RESET	    B	  	_c_int0 	 	; 00
INT1	    B		PHANTOM	 		; 02
INT2	    B		T1UF_ISR		; 04
INT3		B		PHANTOM		; EV interrupt Group B
INT4		B		PHANTOM		; PM 8	Int level 4
INT5		B		PHANTOM		; PM A	Int level 5
INT6		B		PHANTOM		; PM C	Int level 6
RESERVED	B		PHANTOM		; PM E	(Analysis Int)
SW_INT8		B		PHANTOM		; PM 10	User S/W int
SW_INT9		B		PHANTOM		; PM 12	User S/W int
SW_INT10	B		PHANTOM		; PM 14	User S/W int
SW_INT11	B		PHANTOM		; PM 16	User S/W int
SW_INT12	B		PHANTOM		; PM 18	User S/W int
SW_INT13	B		PHANTOM		; PM 1A	User S/W int
SW_INT14	B		PHANTOM		; PM 1C	User S/W int
SW_INT15	B		PHANTOM		; PM 1E	User S/W int
SW_INT16	B		PHANTOM		; PM 20	User S/W int
TRAP		B		PHANTOM		; PM 22	Trap vector
NMI		    B		PHANTOM		; PM 24	Non maskable Int
EMU_TRAP	B		PHANTOM		; PM 26	Emulator Trap
SW_INT20	B		PHANTOM		; PM 28	User S/W int
SW_INT21	B		PHANTOM		; PM 2A	User S/W int
SW_INT22	B		PHANTOM		; PM 2C	User S/W int
SW_INT23	B		PHANTOM		; PM 2E	User S/W int


; Note : The above include line must be AFTER the user configurable 
;        vectors. Do not change the place where this line is included.

;==============================================================================
; M A I N   C O D E  - starts here
;==============================================================================
		    .text
_c_int0:
			CALL	SYS_INIT  
			CALL    SYS_CUR_INIT
			CALL	CLARKE_INIT	
			CALL	PARK_INIT 
			CALL	IIR_BWT4_INIT
			CALL	I_PARK_INIT
			CALL	I_CLARKE_INIT 
			CALL        DC_INIT
			CALL	CUR_CON_INIT
			CALL	PID_REG2_INIT  
			CALL	DATA_LOG_INIT
;			---------------------------------------------------- 
        LDP		#qxishu
        SPLK	#152,qxishu
;====================================
;chu shi hua qian yi ge dian liu zhi 
		LDP		#cishu
		SPLK	#0,cishu 
		LDP		#ia
		SPLK	#0,ia
		SPLK	#0,ib
		SPLK	#0,ic     
		LDP		#WDPD
		SPLK	#1,WDPD
		SPLK	#0,WDJS            
		    
		    LDP		#ling
           	SPLK	#0,ling  
           	SPLK	#0,ifcase  
           	SPLK	#1,fuhao1
           	SPLK	#0,cishu1
           	SPLK	#0,counter2
           	SPLK	#0,jishu1

;  -------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Initialisation
;---------------------------------------------------------

;    LDP     #232
;   SPLK	 #01F4h,T1PER
;   SPLK     #0100h,CMPR1
;   SPLK     #0100h,CMPR2
;   SPLK     #0100h,CMPR3                  
		
;======================================================
MAIN:		;Main system background loop
;======================================================
;    Reset wd timer         
; Point at Sys Module reg page 0
; Reset watchdog timer 
	
M_1      KICK_DOG
		 B	MAIN		; Branch back

;======================================================

            .sect ".subr"
;===========================================================================
; Routine Name: T1UF_ISR				     Routine Type: ISR
;
; Description:
;
;
; Originator: Digital control systems Group - Texas Instruments
;
; History:
;
;
; Last Update:	3-26-2001
;===========================================================================
T1UF_ISR:
;Context save regs
		MAR	*,AR1					;AR1 is stack pointer
		MAR	*+          	;skip one position
		SST	#1, *+      	;save ST1
		SST   #0, *+      ;save ST0
		SACH	*+          ;save acc high
		SACL	*						;save acc low

;NOTE: should use "read-modify-write" to clear Int flags & not SPLK!
		
		POINT_EV
		SPLK	#0FFFFh,IFRA  	; Clear all Group A interrupt flags (T1 ISR) 
		

;=========================================================
;Start main section of ISR
;=========================================================
	
;---------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Main code
;---------------------------------------------------------
	    LDP	    #0E1h
	    LACC	PBDATDIR 
	    AND		#0FFEFh
	    SACL	PBDATDIR
* bits 15	0:	0-IOPB7 is input, 1-IOPB7 is output  
* bits 14	0:	0-IOPB6 is input, 1-IOPB6 is output  
* bits 13	0:	0-IOPB5 is input, 1-IOPB5 is output T3PWM/IOPB5 INT2
* bits 12	1:	0-IOPB4 is input, 1-IOPB4 is output T2PWM       CONVST2 
* bits 11	1:	0-IOPB3 is input, 1-IOPB3 is output T1PWM       CONVST1
* bits 10	0:	0-IOPB2 is input, 1-IOPB2 is output PWM9/IOPB2  INT1
* bits 9	0:	0-IOPB1 is input, 1-IOPB1 is output PWM8
* bits 8	0:	0-IOPB0 is input, 1-IOPB0 is output PWM7
* bits 7	0:	0-IOPB7 low  1-IOPB7 high
* bits 6	0:	0-IOPB6 low  1-IOPB6 high
* bits 5	0:	0-IOPB5 low  1-IOPB5 high
* bits 4	0:	0-IOPB4 low  1-IOPB4 high
* bits 3	0:	0-IOPB3 low  1-IOPB3 high
* bits 2	0:	0-IOPB2 low  1-IOPB2 high
* bits 1	0:	0-IOPB1 low  1-IOPB1 high
* bits 0	0:	0-IOPB0 low  1-IOPB0 high
	    

		


		 SETC    SXM   
	     LDP		#isa 
	     ;first off-chip adc
;Read 1st converted value
        IN 		isa,0h 
        LACC	isa,14
        SACH	isa	
;Read 2nd converted value
        IN 		isb,0h
        LACC	isb,14
        SACH	isb
;Read 3rd converted value
        IN		ila,0h
        LACC    ila,14
        SACH    ila
;Read 4th converted value
        IN 		ilb,0h  
        LACC    ilb,14
        SACH    ilb 
        
        LDP	    #0E1h
	    LACC	PBDATDIR 
	    OR		#10h
	    SACL	PBDATDIR 
	    
	    LDP    #jishu1
	    LACC   #jishu1
	    BCND    TIAO1,GT
	    SPLK	#1011100001010101b,CAPCON 
				;5432109876543210
TIAO1	SPLK	#1010000000000000b,CAPCON       
	    
	    LDP		#0E8H  
		LACC	CAPFIFO
		AND		#1000H		;LI YONG DE SHI CAPTURE4
		BCND	OZ,EQ
***************************************		 
		LDP     #jishu1
		SPLK    #300,jishu1 
		SPLK	#1010000000000000b,CAPCON
		
		
		
;		AND		#2000H
;		BCND	OZ1,EQ
		
	;	LACC	FIFO4
;		LDP		#ling
	;	SACL	ling   
;	    BLDD	#FIFO3,ling 
;	    NOP
;	    NOP   
OZ1	    LDP		#ling
	    BLDD	#FIFO3,ling
	    
	    BLDD	#FIFO3,ling
	    SPLK	#1500,ifcase 
	    LDP		#cishu1
	    SPLK	#0,cishu1
	    SPLK	#1,fuhao1   
	    BLDD	#ling,counter2 
OZ		NOP  
		NOP 
		LDP		#counter1
		BLDD	#T2CNT,counter1
		LACC	counter1
		SUB		counter2
		BCND	DYL1,GEQ 
		LDP		#cishu1
		LACC	cishu1
		ADD		#1000
		SACL	cishu1
DYL1    NOP
		BLDD	#counter1,counter2 
 
TIAO	LDP		#cishu1
		LACC	cishu1
		ADD		counter1
		SUB		ling     
		SUB		#3125
		BCND	DYL3,GT
		ADD		#3125
DYL3	NOP
		NOP		
		SACL	theta  
		
		LDP    #jishu1
		LACC   #jishu1
		SUB    #1
		SACL   jishu1
		
		LDP		#input1
		BLDD	#theta,input1
		BLDD	#ifcase,input2
		BLDD	#CAPFIFO,input3
		CALL	DATA_LOG
		
		LDP		#ifcase
		SPLK	#0,ifcase
	    
        LDP    #iap
        BLDD   #isa,iap
        BLDD   #isb,ibp
        BLDD   #ila,ipla
        BLDD   #ilb,iplb
        CALL 	SYS_CUR
           
        LDP		#clark_a
        BLDD	#ila,clark_a
        BLDD	#ilb,clark_b
        CALL	CLARKE
        
        LDP		#park_d
        BLDD	#clark_d,park_d
        BLDD	#clark_q,park_q
        BLDD	#theta,theta_p 
        CALL	PARK 
           
    
               
          SETC	SXM
         LDP	#park_D
         LACC	park_D
         LDP	#Xin_IIR
         SUB	Yout_IIR 
      ; SUB  	#1061
         LDP	#D   
         SACL	D        
         
         
;        LDP	#input1
;        BLDD	#park_D,input1
;         BLDD	#Yout_IIR,input2
;         BLDD	#D,input3     
 ;        CALL	DATA_LOG               
                                  
        
         LDP	#park_Q
         LACC	park_Q
         LDP	#Xin_IIR
         SUB	Yout_IIR  
        ; SUB	#1161
         LDP	#Q
          SACL	Q                      
     
;        LDP	#input1
 ;        BLDD	#park_Q,input1
 ;        BLDD	#Yout_IIR,input2
 ;        BLDD	#Q,input3
  ;       CALL	DATA_LOG                      
        
;           B		KPP
  
	    
	    LDP		#cishu
		LACC	cishu  
		BCND	XUHUAN,EQ
   
KPP        
         SETC	SXM
 		LDP		#ia
;Read 1st converted value        
        IN   	ia,1h  
        LACC    ia,14
        SACH    ia
;Read 2nd converted value 		         
        IN		ib,1h 
        LACC    ib,14
        SACH     ib
;Read 3rd converted value        
        IN   	idc,1h  
        LACC    idc,14
        SACH    idc
;Read 4th converted value        
XUHUAN: 
        LDP		#Udc
        SETC	SXM
        IN   	Udc,1h  
 ;       LACC    Udc,13
 ;       SACH    Udc          
                
                         
    
        
      ;   B		KPP

		LDP		#cishu
		SPLK	#1,cishu          
		
		LDP		#WDPD
        LACC	WDPD
        BCND	SUB111,EQ  
        
      
;PID SUH CHU * DING BIAO             
       ; LT		pid_out_reg2  
       ; LDP		#qxishu
       ; MPY		qxishu
       ; PAC             
       ; LDP		#pid_out_reg2
       ; SACH	pid_out_reg2,1    
;==================================                   
     
        
;        LDP		#A4_ch_sel
;        SPLK	#5432h,A4_ch_sel
;        CALL	ADC04U_DRV    
;        LT		C1_out  ;wrong  spm 0
     
;        MPY		wc   
;        PAC
;        LDP		#iq
;        ADD		iq,15
;       SACH	iqq,1
;=============================================
;Q ZHOU DE FEN LIANG JIA RU YI GE CHANG SHU 
; ZHI HOU JIN RU 2-3 FAN BIAN HUAN        
      ;  SETC	SXM
      ;  LDP		#Q
       ; LACC	Q       
      ;  LACC	#0
     ; ADD		#400  
      
       
      ;  LDP		#qjia
       ; SACL	qjia   
;===============================================

;=============================================== 
;JIANG PID DE SHU CHU JIA DAO D ZHOU SHANG
	;	LDP		#D
	;	LACC	D             
	;	LACC	#0
	;	LDP		#pid_out_reg2
	;	ADD		pid_out_reg2
	;	LDP		#D
	;	SACL	D

;=============================================  




		
;=========================================				
; PID TIAO JIE O ZHOU FEN LIANG
          
;		LDP		#ipark_D
;		SPLK	#0,ipark_D
;		BLDD	#pid_out_reg2,ipark_Q
;		BLDD	#theta,theta_ip
;		CALL	I_PARK                        
;===============================================
;==============================================
;PID TIAO JIE D ZHOU FEN LIANG
;		LDP		#ipark_D
;		SPLK	#0,ipark_Q
;		BLDD	#pid_out_reg2,ipark_D
;		BLDD	#theta,theta_ip
;		CALL	I_PARK           
;================================================		
;======================================================
;ZHEN ZHENG DE 2-3 FAN BIAN HUAN 
;JIA RU LE YI GE CHANG LIANG
;JIA RU LE PID		        
        LDP 	#ipark_D
        BLDD	#D,ipark_D
        BLDD	#qjia,ipark_Q
        BLDD	#sin_theta,sin_theta1
        BLDD	#cos_theta,cos_theta1
        CALL	I_PARK                  
;============================================  
;=============================================
;Q ZHOU FAN ZHI JIE JIN RU 2-3
  ;       LDP	#ipark_D
  ;       BLDD	#Yout_IIR,ipark_Q
  ;       SPLK	#0,ipark_D
  ;       CALL	I_PARK 

       
 ;======================================================

⌨️ 快捷键说明

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