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

📄 main.asm

📁 此源码实现静止至旋转变换的算法
💻 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		AMP2_INIT,AMP2_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_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		out_a_
		.ref		out_b_
		.ref		out_c_
	  

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

;bian liang di yi

;************************************************************
         .bss	beta,1
         .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

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

;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	AMP2_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		#ling
           	SPLK	#0,ling  
           	SPLK	#0,ifcase  
           	SPLK	#1,fuhao1
           	SPLK	#0,cishu1
           	LDP		#beta
           	SPLK	#0,beta
			
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
		
	;	LACC	FIFO4
		LDP		#ling
	;	SACL	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,GEQ 
		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		#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
        CALL	AMP_MAIN  
        
;        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     #out_a
        LACC    out_a
        BCND    SUODING,LT
        SUB     #1500
        BCND    SUODING,GT 

        LDP     #out_b
        LACC    out_b
        BCND    SUODING,LT
        SUB     #1500
        BCND    SUODING,GT
        LDP     #out_c
        LACC    out_c
        BCND    SUODING,LT
        SUB     #1500
        BCND    SUODING,GT  
        
        LDP		#in_Udc
        LACC	in_Udc
        SUB		#450
        BCND	SUODING,LT 
;pan duan shi fou ben shen         
        LACC    in_Udc
        SUB		#850
        BCND	BENSHEN,GT
        
        LDP		#0E8H
        BLDD	#out_a,CMPR1  
        BLDD	#out_b,CMPR2
        BLDD	#out_c,CMPR3
        B       M1
   
BENSHEN:	LDP		#beta
			LACC	beta
			SUB		#130
			BCND	BENSHEN1,GEQ
			LDP		#beta
			LACC	beta
			ADD		#1
			SACL	beta
BENSHEN1:;	SACL	beta
			LDP		#theta
			LACC	theta
			SUB		beta
			SACL	theta
			LDP		#in_theta
        	BLDD	#theta,in_theta
        	CALL	AMP_MAIN
        	 
        	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	
		
		
;		CALL	AMP2_MAIN
;		LDP		#0E8H
;		BLDD	#out_a_,CMPR1  
;        BLDD	#out_b_,CMPR2
;        BLDD	#out_c_,CMPR3			
                            
         B       M1
SUODING:
        LDP		#0E8H
        SPLK    #750,CMPR1
        SPLK    #750,CMPR2        
        SPLK    #750,CMPR3
                             
M1:     
         LDP	#input1
         BLDD	#in_Udc,input1
         BLDD	#Udc_bef,input2
         BLDD	#out_c,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 + -