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

📄 main.asm

📁 此源码为用于电力电子变换器的DSP汇编源程序
💻 ASM
字号:
;************************************************************

;zhi zuo zhe :hua bei dian li da xue
; 			  dian neng zhi liang yan jiu suo   
;shi jian    :2002-4-25

;************************************************************

		.include	"x24x_app.h"
;************************************************************

;yin yong shuo ming 

;************************************************************
		
 		.ref	SYS_INIT   
 		
		.ref		DATA_LOG, DATA_LOG_INIT		;function call
		.ref		input1,input2,input3,input4  
		   
		.ref		AMP_INIT,AMP_MAIN 
		.ref		AMP1_MAIN
		.ref		in_theta,ina_amp ,inc_amp,in_daoshu
		.ref		out_ta,out_tb,out_tc
		.ref		amp_a,amp_b,amp_c  
	
		
		.ref		IIR_BWT4, IIR_BWT4_INIT		;function call
		.ref		Xin_IIR						;Inputs
		.ref		Yout_IIR						;Outputs 
		
		.ref		IIR_BWT41, IIR_BWT41_INIT		;function call
		.ref		Xin_IIR1						;Inputs
		.ref		Yout_IIR1						;Outputs
         
         
        .ref	CLARKE, CLARKE_INIT				;function call
		.ref	clark_a, clark_b				;Inputs
		.ref	clark_d, clark_q				;Outputs
        
        
       	.ref	I_CLARKE, I_CLARKE_INIT			;function call
		.ref	Iclark_d, Iclark_q			;Inputs
		.ref	Iclark_a, Iclark_b, Iclark_c		;Outputs
         
         
        .ref	I_PARK, I_PARK_INIT					;function call
		.ref	ipark_D, ipark_Q, sin_theta1,cos_theta1	;Inputs
		.ref	ipark_d, ipark_q						;Outputs
        .ref	theta_ip
        .ref	SINTAB_360  
        
        
       	.ref	PARK, PARK_INIT					;function call
		.ref	park_d, park_q,sin_theta,cos_theta,theta_p			;Inputs
		.ref	park_D, park_Q					;Outputs 
		.ref	SINTAB_360
         
         
        .ref	Udc_init,Udc_main
		.ref	in_Udc    
		.ref	out_Udc ,Udc_bef
		.ref    theta_c
		.ref	theta_b
		.ref	theta_a
		.ref    amp_dizhi
		.ref    AAA
		.ref    BBB
		.ref    WAY 
		.ref    WAY1  
		
		
		.ref		in_ta,in_tb,in_tc
		.ref		out_a,out_b,out_c
		.ref		out_1,out_2,out_3  
		.ref		ZHONG_MAIN
	                            
	                            
	    .ref	switch1
	    .ref	switch2                        

      	.def    theta
        .def   	Uab  
        .def	Ubc
        .def   	ila
        .def   	ilb 
        .def    GPR0
        .def	adc_sel   
;************************************************************

;bian liang di yi

;************************************************************
         .bss   GPR0,1            
         .bss   adc_sel,1             
         .bss   	Uab,1  
        .bss	Ubc,1 
        .bss   	ila,1
        .bss   	ilb,1
        .bss   	Udc,1 
        .bss   	theta,1     
        .bss	Ubili,1    
        .bss	Ubc_fu,1  
        .bss	U_d,1
        .bss	U_q,1
        
         .bss	ling,1          
         .bss	ifcase,1   
         .bss	fuhao1,1
         .bss	cishu1,1  
         .bss	counter1,1    
         .bss	counter2,1  
         .bss	pointer,1 
         .bss	geshu1,1
         .bss	geshu2,1

;************************************************************

;zhong duan xiang liang biao

;************************************************************
 
  		.sect ".vectors"  

RESET	    B	  	start	 	; 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


;************************************************************

;zhu cheng xu 

;************************************************************

		    .text
start:
			CALL	SYS_INIT  
			CALL	DATA_LOG_INIT   
			CALL	AMP_INIT
			
			CALL	IIR_BWT4_INIT
			CALL	IIR_BWT41_INIT   
			CALL	CLARKE_INIT
			CALL	I_CLARKE_INIT
			CALL	I_PARK_INIT
			CALL	PARK_INIT 
			CALL	Udc_init
			LDP		#Ubili
			SPLK	#24060,Ubili;Q12 BIAO SHI 5.873972 
			
			LDP		#pointer
			SPLK	#1,pointer 
			LDP		#switch1
			SPLK	#0,switch1
			SPLK	#0,switch2   
			
			                   
			LDP		#theta
			SPLK	#0,theta                   
        
			
			LDP		#ling
           	SPLK	#0,ling  
           	SPLK	#0,ifcase  
           	SPLK	#1,fuhao1
           	SPLK	#0,cishu1
			
MAIN:	 	NOP
      		KICK_DOG
		 	B	MAIN	

;************************************************************

;zhong duan fu wu cheng xu 

;************************************************************

            .sect ".subr2"
T1UF_ISR:
		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

		
		POINT_EV
		SPLK	#0FFFFh,IFRA  	; Clear all Group A interrupt flags (T1 ISR) 
		
 	    LDP	    #0E1h
	    LACC	PBDATDIR 
	    AND		#0FFFBh
	    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
	    
;		ldp		#theta
;		in	 	theta,2h 
		
;		LACC	theta
;		add		#16
;		ADD     #85
;		AND		#03FFH
;		SACL	theta   


;ruan jian suo xiang 
;  	    LDP		#0E8H  
;		LACC	CAPFIFO
;		AND		#3000H		;LI YONG DE SHI CAPTURE4
;		BCND	OZ,EQ
;		AND		#2000H
;		BCND	OZ1,EQ
;		
;		LDP		#ling
;	    BLDD	#FIFO3,ling 
;	    NOP
;	    NOP   
;OZ1	    LDP		#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,GT 
;		LDP		#cishu1
;		LACC	cishu1
;		ADD		#1500
;		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		#theta
		LACC	theta
		ADD		#4
		SACL	theta
		SUB		#1064
		SACL	theta
		BCND	B1,LT
        B       B2
B1		ADD		#1064
		SACL	theta		
		                      
                      
                      
                      
                     
B2        LDP		#ifcase
		SPLK	#0,ifcase
                     

		 SETC    SXM   
	     LDP		#Uab 
	     ;first off-chip adc
;Read 1st converted value
        IN 		Uab,0h 
        LACC	Uab,14
        SACH	Uab	
;Read 2nd converted value
        IN 		Ubc,0h
        LACC	Ubc,14
        SACH	Ubc
;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		#04h
	    SACL	PBDATDIR
        SETC	SXM   
        
;	   	LDP	    #0E1h
;WAIT11: LACC	PBDATDIR 
;	    BIT		PBDATDIR,BIT7
;	    BCND	WAIT11,TC    
	    
	    SPM		2    
	    LDP		#Ubili
	    LT		Ubili;Q12 BIAO SHI 5.873972
	    MPY		Uab
	    PAC        
	    SACH	Uab ;Q6 ji shu fan ying shi ji xian dian ya you xiao zhi x/(64*1.414)   
	    MPY		Ubc
	    PAC
	    SACH	Ubc	  	  
;	    NEG
;	    SACH	Ubc_fu   
	    
;	    LDP		#clark_a
;        BLDD	#Uab,clark_a
;        BLDD	#Ubc_fu,clark_b
;        CALL	CLARKE  
	    
;	    LDP		#park_d
;        BLDD	#clark_d,park_d
;        BLDD	#clark_q,park_q
;        BLDD	#theta,theta_p 
;        CALL	PARK 
****************************************	    
	;     LDP	#Xin_IIR
         ;BLDD	#park_D,Xin_IIR
      
         BLDD   #Uab,Xin_IIR 
         CALL	 IIR_BWT4 
         LDP		#in_theta    
    ;     BLDD	#Yout_IIR,ina_amp
         BLDD	#Uab,ina_amp
         
         ;LDP	#U_d
         ;BLDD	#Yout_IIR,U_d
         
         LDP	#Xin_IIR
         ;BLDD	#park_Q,Xin_IIR
         BLDD   #Ubc,Xin_IIR
         CALL	 IIR_BWT4  
         LDP		#in_theta    
     ;    BLDD	#Yout_IIR,inc_amp 
         BLDD	#Ubc,inc_amp                
         ;LDP	#U_d
         ;BLDD	#Yout_IIR,U_q  
         
        ;LDP 	#ipark_D
        ;BLDD	#U_d,ipark_D
        ;BLDD	#U_q,ipark_Q
        ;BLDD	#sin_theta,sin_theta1
        ;BLDD	#cos_theta,cos_theta1
        ;CALL	I_PARK               
        
       	 ;LDP	#Iclark_d
         ;BLDD	#ipark_d,Iclark_d
         ;BLDD	#ipark_q,Iclark_q
         ;CALL	I_CLARKE        
         
;yi shang wan chen Uab Ubc de lv bo          
      
        SETC	SXM
        LDP		#Udc
        SETC	SXM
        IN   	Udc,1h  
        LACC    Udc,14
        SACH    Udc     
        
        LDP		#Xin_IIR
        BLDD	#ila,Xin_IIR 
        call	IIR_BWT4 
                            
        LDP		#in_Udc
        BLDD   #Yout_IIR,in_Udc
        
    ;      LDP		#in_Udc
    ;      BLDD	#ila,in_Udc
;		SPLK	#9257,in_Udc  ;1.13 zhe yi ju de mu di zai yu tiao shi qiu dao cheng xu
        CALL	Udc_main
;qiu chu Udc de ping jun zhi bing qiu chu (Udc/514) 
        
        LDP		#in_theta
        BLDD	#theta,in_theta 
        ;BLDD	#Iclark_a,ina_amp 
        ;BLDD	#Uab,ina_amp
       	;BLDD	#Iclark_b,inc_amp 
       	;BLDD	#Ubc,inc_amp
       	BLDD	#Udc_bef,in_daoshu     ;in_daoshu shi Q13 
       	
       	LDP		#pointer
       	LACC	pointer
       	BCND	A1,EQ
       	
        CALL	AMP_MAIN 
                        
        LDP		#geshu2
        SPLK	#2,geshu2                 ;10000*75us de ge shu                
        
        LDP		#pointer
        SPLK	#1,pointer
        LACC	switch1
        SUB		#1330
        
                  
        BCND	A2,LT
      
      
        LDP		#geshu1
        LACC	geshu1 
        SUB		#1
        SACL	geshu1
        BCND	A1,LT
        
        LDP		#switch1
        SPLK	#0,switch1
		B		A2
                         
        
A1		CALL	AMP1_MAIN 

		LDP		#geshu1
        SPLK	#4,geshu1                 ;10000*75us de ge shu
		
		LDP		#pointer
		SPLK	#0,pointer
	    LACC	switch2
	    SUB		#1330 
	    
		BCND	 A2,LT  
		
		LDP		#geshu2
        LACC	geshu2 
        SUB		#1
        SACL	geshu2
		BCND	A3,LT
		
		LDP		#switch2
        SPLK	#0,switch2
		B		A2
		
A3		LDP		#pointer
		SPLK	#1,pointer			                           
                           
A2		NOP                           
                           
                           
;        LDP		#input1
;          BLDD	#out_ta,input1
;         BLDD	#out_tb,input2
;        BLDD	#Udc_bef,input3
;         CALL	DATA_LOG 
        
        LDP		#in_ta
        BLDD	#out_ta,in_ta
        BLDD	#out_tb,in_tb
        BLDD	#out_tc,in_tc 
        CALL	ZHONG_MAIN 
        
        
        LDP		#0E8H
        BLDD	#out_a,CMPR1  
        BLDD	#out_b,CMPR2
        BLDD	#out_c,CMPR3   
        
     
                             
         LDP	#input1
         BLDD	#out_ta,input1
         BLDD	#out_tb,input2
         BLDD	#out_tc,input3
         CALL	DATA_LOG
  
END_ISR:
		POINT_PG0

		MAR		*, AR1      	;make stack pointer active
		LACL	*-		        ;Restore Acc low
		ADDH	*-		        ;Restore Acc high
		LST		#0, *-        ;load ST0
		LST     #1, *-      ;load ST1
		EINT
		RET
         
         
         
         
 
PHANTOM 	B	PHANTOM
PHANTOM1 	B	PHANTOM1
PHANTOM2 	B	PHANTOM2
PHANTOM3 	B	PHANTOM3
PHANTOM4 	B	PHANTOM4
PHANTOM5 	B	PHANTOM5
PHANTOM6 	B	PHANTOM6







    
   

⌨️ 快捷键说明

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