?? 三相交流異步電動(dòng)機(jī)svpwm開環(huán)調(diào)速控制程序.txt
字號(hào):
.include "240x.h" ; 寄存器地址
.global _c_int0 ;全局化標(biāo)號(hào)
;--------------------------------------以下定義變量-------------------------------------------------------------
ST0 .set 0 ;狀態(tài)寄存器ST0
ST1 .set 1 ;狀態(tài)寄存器ST1
.bss TEMP,1 ;臨時(shí)變量
.bss SET_F,1 ;頻率調(diào)節(jié)比,Q16格式(值為0-1,對(duì)應(yīng)0-50Hz)
.bss F_OMEGA,1 ;頻率調(diào)節(jié)比-角頻率轉(zhuǎn)換率,Q5格式
.bss OMEGA,1 ;調(diào)制波角頻率,Q5格式
.bss SET_V,1 ;參考電壓,Q14格式
.bss MAX_V,1 ;最大參考電壓幅值1/ ,Q14格式
.bss T_SAMPLE,1 ;采樣周期,Q24格式
.bss THETA_H,1 ;參考電壓相位角高字,Q12格式
.bss THETA_L,1 ;參考電壓相位角低字,Q12格式
.bss THETA_R,1 ;相位角的圓整值,Q12格式
.bss THETA_M,1 ;相位查表值(0-90度),Q12格式
.bss THETA_I,1 ;相角查表索引,Q9格式
.bss SS,1 ;SIN符號(hào),Q0格式
.bss SC,1 ;COS符號(hào),Q0格式
.bss SIN_INDX,1 ;SIN表索引,Q0格式
.bss SIN_ENTRY,1 ;SIN表入口地址
.bss SIN_END,1 ;SIN表結(jié)束地址
.bss SIN_THETA,1 ;SINθ值,Q14格式
.bss COS_THETA,1 ;COSθ值,Q14格式
.bss UA,1 ;參考電壓D軸分量UA,Q12格式
.bss UB,1 ;參考電壓Q軸分量UB,Q12格式
.bss THETA_S,1 ;θ-扇區(qū)數(shù)轉(zhuǎn)換系數(shù),Q15格式
.bss SECTOR,1 ;參考電壓所在的扇區(qū)數(shù),Q0格式
.bss THETA_90,1 ;90度,Q12格式
.bss THETA_180,1 ;180度,Q12格式
.bss THETA_270,1 ;270度,Q12格式
.bss THETA_360,1 ;360度,Q12格式
.bss DEC_MS,24 ;6個(gè)逆陣,Q14格式
.bss T1_PERIODS,1 ;定時(shí)器1周期值,Q5格式
.bss CMP_1,1 ;第1基本矢量,Q0格式
.bss CMP_2,1 ;第2基本矢量,Q0格式
.bss CMP_0,1 ;0基本矢量/2,Q0格式
.bss FIRST_TOG,1 ;存放第一次比較匹配的比較器地址
.bss SEC_TOG,1 ;存放第二次比較匹配的比較器地址
.bss ACCH,1 ;ACC高字保存單元
.bss ACCL,1 ;ACC低字保存單元
.bss AR0_SAVE,1 ;AR0保存單元
.bss P_HI,1 ;P寄存器高字保存單元
.bss P_LO,1 ;P寄存器低字保存單元
;-------------------------------------- CONTEXT段,定義保護(hù)現(xiàn)場數(shù)據(jù)區(qū)--------------------------
ST0_SAVE .usect ".context",1 ;狀態(tài)寄存器ST0保存單元
ST1_SAVE .usect ".context",1 ;狀態(tài)寄存器ST1保存單元
;-------------------------------------- 定義主向量段--------------------------------------------------
.sect ".vectors" ;定義主向量段
RESET B _c_int0 ;地址0000H,復(fù)位,優(yōu)先級(jí)1
INT1 B PHANTOM ;地址0002H,INT1,優(yōu)先級(jí)4
INT2 B _C_INT2 ;地址0004H,INT2,優(yōu)先級(jí)5
INT3 B PHANTOM ;地址0006H,INT3,優(yōu)先級(jí)6
INT4 B PHANTOM ;地址0008H,INT4,優(yōu)先級(jí)7
INT5 B PHANTOM ;地址000AH,INT5,優(yōu)先級(jí)8
INT6 B PHANTOM ;地址000CH,INT6,優(yōu)先級(jí)9
RESERVED B PHANTOM ;地址000EH,測試,優(yōu)先級(jí)10
SW_INT8 B PHANTOM ;地址0010H,自定義軟中斷
SW_INT9 B PHANTOM ;地址0012H,自定義軟中斷
SW_INT10 B PHANTOM ;地址0014H,自定義軟中斷
SW_INT11 B PHANTOM ;地址0016H,自定義軟中斷
SW_INT12 B PHANTOM ;地址0018H,自定義軟中斷
SW_INT13 B PHANTOM ;地址001AH,自定義軟中斷
SW_INT14 B PHANTOM ;地址001CH,自定義軟中斷
SW_INT15 B PHANTOM ;地址001EH,自定義軟中斷
SW_INT16 B PHANTOM ;地址0020H,自定義軟中斷
TRAP B PHANTOM ;地址0022H,TRAP矢量
NMI B PHANTOM ;地址0024H,NMI,優(yōu)先級(jí)3
EMU_TRAP B PHANTOM ;地址0026H,仿真Trap,優(yōu)先級(jí)2
SW_INT20 B PHANTOM ;地址0028H,自定義軟中斷
SW_INT21 B PHANTOM ;地址002AH,自定義軟中斷
SW_INT22 B PHANTOM ;地址002CH,自定義軟中斷
SW_INT23 B PHANTOM ;地址002EH,自定義軟中斷
SW_INT24 B PHANTOM ;地址0030H,自定義軟中斷
SW_INT25 B PHANTOM ;地址0032H,自定義軟中斷
SW_INT26 B PHANTOM ;地址0034H,自定義軟中斷
SW_INT27 B PHANTOM ;地址0036H,自定義軟中斷
SW_INT28 B PHANTOM ;地址0038H,自定義軟中斷
SW_INT29 B PHANTOM ;地址003AH,自定義軟中斷
SW_INT30 B PHANTOM ;地址003CH,自定義軟中斷
SW_INT31 B PHANTOM ;地址003EH,自定義軟中斷
;-------------------------------------- 定義子向量段------------------------------------------------------
.sect ".pvecs" ;定義子向量段
PVECTORS B PHANTOM ;偏移地址0000H
B PHANTOM ;偏移地址0001H
B PHANTOM ;偏移地址0002H
B PHANTOM ;偏移地址0003H
B PHANTOM ;偏移地址0004H
B PHANTOM ;偏移地址0005H
B PHANTOM ;偏移地址0006H
B PHANTOM ;偏移地址0007H
B PHANTOM ;偏移地址0008H
B PHANTOM ;偏移地址0009H
B PHANTOM ;偏移地址000AH
B PHANTOM ;偏移地址000BH
B PHANTOM ;偏移地址000CH
B PHANTOM ;偏移地址000DH
B PHANTOM ;偏移地址000EH
B PHANTOM ;偏移地址000FH
B PHANTOM ;偏移地址0010H
B PHANTOM ;偏移地址0011H
B PHANTOM ;偏移地址0012H
B PHANTOM ;偏移地址0013H
B PHANTOM ;偏移地址0014H
B PHANTOM ;偏移地址0015H
B PHANTOM ;偏移地址0016H
B PHANTOM ;偏移地址0017H
B PHANTOM ;偏移地址0018H
B PHANTOM ;偏移地址0019H
B PHANTOM ;偏移地址001AH
B PHANTOM ;偏移地址001BH
B PHANTOM ;偏移地址001CH
B PHANTOM ;偏移地址001DH
B PHANTOM ;偏移地址001EH
B PHANTOM ;偏移地址001FH
B PHANTOM ;偏移地址0020H
B PHANTOM ;偏移地址0021H
B PHANTOM ;偏移地址0022H
B PHANTOM ;偏移地址0023H
B PHANTOM ;偏移地址0024H
B PHANTOM ;偏移地址0025H
B PHANTOM ;偏移地址0026H
B PHANTOM ;偏移地址0027H
B PHANTOM ;偏移地址0028H
B T1UF_ISR ;偏移地址0029H
B PHANTOM ;偏移地址002AH
B PHANTOM ;偏移地址002BH
B PHANTOM ;偏移地址002CH
B PHANTOM ;偏移地址002DH
B PHANTOM ;偏移地址002EH
B PHANTOM ;偏移地址002FH
B PHANTOM ;偏移地址0030H
B PHANTOM ;偏移地址0031H
B PHANTOM ;偏移地址0032H
B PHANTOM ;偏移地址0033H
B PHANTOM ;偏移地址0034H
B PHANTOM ;偏移地址0035H
B PHANTOM ;偏移地址0036H
B PHANTOM ;偏移地址0037H
B PHANTOM ;偏移地址0038H
B PHANTOM ;偏移地址0039H
B PHANTOM ;偏移地址003AH
B PHANTOM ;偏移地址003BH
B PHANTOM ;偏移地址003CH
B PHANTOM ;偏移地址003DH
B PHANTOM ;偏移地址003EH
B PHANTOM ;偏移地址003FH
B PHANTOM ;偏移地址0040H
B PHANTOM ;偏移地址0041H
;--------------------------------------以下是主程序--------------------------------------------------------
.text
;--------------------------------------系統(tǒng)初始化程序----------------------------------------------------
_c_int0
SETC INTM ; 禁止中斷
CLRC CNF ;B0為數(shù)據(jù)存儲(chǔ)區(qū)
LDP #224
SPLK #0000001000000100B,SCSR1 ;CLKIN 10M,CLKOUT 20M
SPLK #68H,WDCR ;不用看門狗
LDP #225
LACC MCRA
OR #0FC0H ;設(shè)置PWM1-6引腳
SACL MCRA
;--------------------------------------中斷初始化程序----------------------------------------------------
LDP #0
SPLK #0FFH,IFR ; 清所有系統(tǒng)中斷標(biāo)志
SPLK #00000010B,IMR ; 開INT2中斷
LDP #232
SPLK #0FFFH,EVAIFRA ; 清事件管理器A所有中斷標(biāo)志
SPLK #0FH,EVAIFRB
SPLK #0FH,EVAIFRC
SPLK #0200H,EVAIMRA ; 開T1下溢中斷
SPLK #0,EVAIMRB ; 屏蔽所有中斷
SPLK #0,EVAIMRC ; 屏蔽所有中斷
;--------------------------------------初始化事件管理器A程序-----------------------------------------
SPLK #500,T1PR ; T1周期值=50 us/50ns/2=500
SPLK #500,CMPR1 ; 占空比初值 0%
SPLK #500,CMPR2
SPLK #500,CMPR3
SPLK #0000011001100110B,ACTRA ; 引腳PWM1,3,5高有效,2,4,6低有效
SPLK #01F4H,DBTCONA ; 死區(qū)時(shí)間1*32*50ns=1.6us
SPLK #1000001000000000B,COMCONA ;允許比較,不用硬件空間矢量
SPLK #1000100000000010B,T1CON ;連續(xù)增減計(jì)數(shù)方式,預(yù)分頻=1
;--------------------------------------變量初始化程序-----------------------------------------------------
LDP #6 ; 指向B1
SPLK #0347H,T_SAMPLE ;采樣周期=50us *224=839秒=347H, Q24格式
SPLK #16000,T1_PERIODS ;T1周期值的Q5格式,500*32
SPLK #11585,MAX_V ; 最大參考電壓幅值1/ ,Q14格式
SPLK #0,SET_F ; SET F=0
SPLK #10053,F_OMEGA ;頻率調(diào)節(jié)比-角頻率轉(zhuǎn)換率,Q5格式
;當(dāng)SET_F=1時(shí),對(duì)應(yīng)最大角頻率2π50Hz*25=10053
SPLK #0,THETA_L ;θ低字,Q12格式
SPLK #0,THETA_H ; θ高字,Q12格式
LAR AR0,#THETA_90 ; 傳送常用角度和逆陣數(shù)據(jù)
LAR AR1,#(28-1) ; 28個(gè)
LACC #ANGLES_ ; 指向源
LAR AR0
INIT_TBL
TBLR *+,AR1 ; 下一個(gè)
ADD #1 ; 下一個(gè)地址
BANZ INIT_TBL,AR0 ;AR1=0結(jié)束
SPLK #29335,THETA_I ; 相角查表索引,180/π,Q9格式
SPLK #31291,THETA_S ; θ-扇區(qū)數(shù)轉(zhuǎn)換系數(shù),6/(2π),Q15格式
SPLK #SIN_ENTRY_,SIN_ENTRY ;SIN表起始地址
SPLK #(SIN_ENTRY_+90),SIN_END ;SIN表結(jié)束地址
LDP #232
SPLK #0000100001000010B,T1CON ;使能T1
CLRC INTM ; 開總中斷
;--------------------------------------主循環(huán)程序(SET_F由外部輸入)-----------------------------------
MAIN_LOOP
LDP #6
LT SET_F ; 將頻率調(diào)節(jié)比(Q16格式)轉(zhuǎn)換成角頻率
MPYU F_OMEGA ; Q21
PAC ; 積送ACC, Q5格式
SACH OMEGA ; 保存角頻率,Q5格式
LT SET_F ;將頻率調(diào)節(jié)比(Q16格式)轉(zhuǎn)換成參考電壓
MPYU MAX_V ; Q16*Q14=Q30
PAC
SACH SET_V ; 保存參考電壓幅值,Q14格式
B MAIN_LOOP ; 循環(huán)
;--------------------------------------假中斷處理----------------------------------------------------------
PHANTOM
CLRC INTM
RET
;--------------------------------------T1下溢中斷處理子程序----------------------------------------------
_C_INT2
SST #ST0,ST0_SAVE ; 保存現(xiàn)場ST0
SST #ST1,ST1_SAVE ; 保存ST1
LDP #6
SACH ACCH
SACL ACCL ; 保存ACC
SPH P_HI
SPL P_LO ; 保存 P
MPY #1 ; P<=T
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -