📄 main.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 + -