程序清单31采用不对称规则采样法生成三相SPWM波的开环调速控制程.docx
- 文档编号:12264668
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:19
- 大小:16.98KB
程序清单31采用不对称规则采样法生成三相SPWM波的开环调速控制程.docx
《程序清单31采用不对称规则采样法生成三相SPWM波的开环调速控制程.docx》由会员分享,可在线阅读,更多相关《程序清单31采用不对称规则采样法生成三相SPWM波的开环调速控制程.docx(19页珍藏版)》请在冰豆网上搜索。
程序清单31采用不对称规则采样法生成三相SPWM波的开环调速控制程
程序清单3-1采用不对称规则采样法生成三相SPWM波的开环调速控制程序
#include
.SECTION/PMIVreset;
JUMPstart;
.SECTION/PMIVint4;
JUMPPWMSYNC_IRQ;
.section/datadata1;
.VARPITC=42166;
.VARK_=0;
.VARF_modu=480;
.VARTWOP=25736;
.VART_THP=8579;
.VARF_THP=17157;
.VARATOD=917;
.VARM_=0;
.VART_QUA=625;
.VARPMAX=2350;
.VARPMIN=150;
.VARN_=0;
.VARF_CARR=40000;
.VARKMAX=0;
.VARF_M=37749;
.VARTEMP1=0x0000;
.VARTEMP2=0x0000;
.VARTEMP3=0x0000;
.VARTEMP4=0x0000;
.VARTEMP5=0x0000;
.VARTEMP6=0x0000;
.VARTEMP=0x0000;
.VARSIN_ENTRY[361]=
0,286,572,857,1143,1428,1713,1997,2280,2563,2845,
3126,3406,3686,3964,4240,4516,4790,5063,5334,5604,
5872,6138,6402,6664,6924,7182,7438,7692,7943,8192,
8438,8682,8923,9162,9397,9630,9860,10087,10311,10531,
10749,10963,11174,11381,11585,11786,11982,12176,12365,12551,
12733,12911,13085,13255,13421,13583,13741,13894,14044,14189,
14330,14466,14598,14726,14849,14968,15082,15191,15296,15396,
15491,15582,15668,15749,15826,15897,15964,16026,16083,16135,
16182,16225,16262,16294,16322,16344,16362,16374,16382,16384,//90
16382,16384,16362,16344,16322,16294,16262,16225,16182,16135,
16083,16026,15964,15897,15826,15749,15668,15582,15491,15396,
15296,15191,15082,14968,14849,14726,14598,14466,14330,14189,
14044,13894,13741,13583,13421,13255,13085,12911,12733,12551,
12365,12176,11982,11786,11585,11381,11174,10963,10749,10531,
10311,10087,9860,9630,9397,9162,8923,8682,8438,8192,
7943,7692,7438,7182,6924,6664,6402,6138,5872,5604,
5334,5063,4790,4516,4240,3964,3686,3406,3126,2845,
2563,2280,1991,1713,1428,1143,857,572,286,0,//180
65250,64964,64679,64396,64108,63823,63539,63256,62973,62691,
62410,62130,61850,61572,61296,61020,60746,60473,60202,59932,
59664,59398,59134,58872,58612,58354,58098,57844,57593,57344,
57198,56854,56613,56374,56139,55906,55676,55449,55225,55005,
54787,54573,54362,54155,53951,53750,53554,53360,53171,52985,
52803,52625,52451,52281,52115,51953,51795,51642,51492,51347,
51206,51070,50938,50810,50687,50568,50454,50345,50240,50140,
50045,49954,49868,49787,49710,49639,49572,49510,49453,49401,
49354,49311,49274,49242,49214,49192,49174,49162,49154,49152,//270
49154,49162,49174,49192,49214,49242,49274,49311,49354,49401,
49453,49510,49574,49639,49710,49787,49868,49954,50045,50140,
50240,50345,50454,50568,50687,50810,50938,51070,51206,51347,
51492,51642,51795,51953,52115,52281,52451,52625,52803,52985,
53171,53360,53554,52750,53951,54155,54362,54574,54787,55005,
55225,55449,55676,55906,56139,56374,56613,56854,57098,57344,
57593,57844,58098,58354,58612,58872,59134,59398,59664,59932,
60202,60473,60746,61050,61296,61572,61850,62130,62410,62691,
62973,63256,63539,63823,64108,64393,64679,64964,65250,0;//360
.SECTION/PMprogram;
start:
DISINT;
IMASK=0x0000;
IOPG=Interrupt_Controller_Page;
AX0=0xBBB0;
IO(IPR2)=AX0;
IMASK=0x0010;
AX0=0x0;
IO(PLLCTL)=AX0;
.SECTION/PMprogram;
IOPG=0x0008;
AX0=0x1;
IO(PWM0_CTRL)=AX0;
AX0=1250;
IO(PWM0_TM)=AX0;
AX0=3999;
IO(PWM0_SYNCWT)=AX0;
AX0=40;
IO(PWM0_DT)=AX0;
AX0=40;
IO(PWM0_CHA)=AX0;
IO(PWM0_CHB)=AX0;
IO(PWM0_CHC)=AX0;
AX0=0x0;
IO(PWM0_SEG)=AX0;
AX0=0x0000;
IO(PWM0_STAT)=AX0;
ENAINT;
.SECTION/codeprogram;
ASTAT=0x00;
AX0=DM(F_modu);
SI=AX0;
SR=LSHIFTAX0BY-4(HI);
AX0=SR1;
AF=PASS0x0000;
AY0=DM(F_CARR);
DIVQAX0;DIVQAX0;DIVQAX0;DIVQAX0;
DIVQAX0;DIVQAX0;DIVQAX0;DIVQAX0;
DIVQAX0;DIVQAX0;DIVQAX0;DIVQAX0;
DIVQAX0;DIVQAX0;DIVQAX0;DIVQAX0;
DM(N_)=AY0;
SI=AY0;
SR=LSHIFTSIBY1(LO);
DM(KMAX)=SR0;
ENAM_MODE;
AX0=DM(F_modu);
MX0=DM(F_M);
MR=MX0*AX0(UU);
DM(M_)=MR1;
WAIT:
JUMPWAIT;
PWMSYNC_IRQ:
.SECTION/codeprogram;
ENASEC_REG,ENASEC_DAG;
ENAM_MODE;
AX0=0;
IO(PWM0_STAT)=AX0;
MX0=DM(PITC);
MY0=DM(K_);
MR=MX0*MY0(UU);
SI=MR1;
SR=ASHIFTSIBY4(HI);
SI=MR0;
SR=SRORLSHIFTSIBY4(LO);
MX1=SR1;
MY1=DM(F_modu);
MR=MX1*MY1(UU);
SI=MR1;
SR=LSHIFTSIBY8(HI);
SI=MR0;
SR=SRORLSHIFTSIBY8(LO);
AX1=SR1;
DM(TEMP1)=AX1;
AY1=DM(T_THP);
AR=AX1+AY1;
DM(TEMP2)=AR;
AX0=DM(TWOP);
AR=AR-AX0;
IFLTJUMPWXM1;
DM(TEMP2)=AR;
WXM1:
AR=DM(TEMP1);
AX0=DM(F_THP);
AR=AR+AX0;
DM(TEMP3)=AR;
AX0=DM(TWOP);
AR=AR-AX0;
IFLTJUMPWXM2;
DM(TEMP3)=AR;
WXM2:
AX0=DM(TEMP1);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP1)=MR1;
AX0=DM(TEMP1);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG1;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S1;
ZHENG1:
AR=AX1+Ay0;
M_S1:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP1)=SR1;
AX0=DM(TEMP2);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP2)=MR1;
AX0=DM(TEMP2);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG2;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S2;
ZHENG2:
AR=AX1+Ay0;
M_S2:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP2)=SR1;
AX0=DM(TEMP3);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP3)=MR1;
AX0=DM(TEMP3);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG3;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S3;
ZHENG3:
AR=AX1+Ay0;
M_S3:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP3)=SR1;
AR=DM(K_);
AR=AR+1;
DM(K_)=AR;
MX0=DM(PITC);
MY0=DM(K_);
MR=MX0*MY0(UU);
SI=MR1;
SR=ASHIFTSIBY4(HI);
SI=MR0;
SR=SRORLSHIFTSIBY4(LO);
MX1=SR1;
MY1=DM(F_modu);
MR=MX1*MY1(UU);
SI=MR1;
SR=LSHIFTSIBY8(HI);
SI=MR0;
SR=SRORLSHIFTSIBY8(LO);
AX1=SR1;
DM(TEMP4)=AX1;
AY1=DM(T_THP);
AR=AX1+AY1;
DM(TEMP5)=AR;
AX0=DM(TWOP);
AR=AR-AX0;
IFLTJUMPWXM3;
DM(TEMP5)=AR;
WXM3:
AR=DM(TEMP4);
AX0=DM(F_THP);
AR=AR+AX0;
DM(TEMP6)=AR;
AX0=DM(TWOP);
AR=AR-AX0;
IFLTJUMPWXM4;
DM(TEMP6)=AR;
WXM4:
AX0=DM(TEMP4);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP4)=MR1;
AX0=DM(TEMP4);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG4;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S4;
ZHENG4:
AR=AX1+Ay0;
M_S4:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP4)=SR1;
AX0=DM(TEMP5);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP5)=MR1;
AX0=DM(TEMP5);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG5;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S5;
ZHENG5:
AR=AX1+Ay0;
M_S5:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP5)=SR1;
AX0=DM(TEMP6);
AY0=DM(ATOD);
MR=AX0*AY0(UU);
DM(TEMP6)=MR1;
AX0=DM(TEMP6);
I0=SIN_ENTRY;
M0=AX0;
AX0=DM(I0+M0);
AY0=DM(M_);
MR=AX0*AY0(SU);
SI=MR1;
SR=ASHIFTSIBY7(HI);
SI=MR0;
SR=SRORLSHIFTSIBY7(LO);
AY0=SR1;
AX0=0x8000;
AR=AX0ANDAY0;
AX1=16384;
IFEQJUMPZHENG5;
AR=ABSAY0;
AR=AX1-AR;
JUMPM_S6;
ZHENG6:
AR=AX1+AY0;
M_S6:
AY1=DM(T_QUA);
MR=AR*AY1(UU);
SI=MR1;
SR=ASHIFTSIBY1(HI);
SI=MR0;
SR=SRORLSHIFTSIBY1(LO);
DM(TEMP6)=SR1;
AR=DM(K_);
AR=AR+1;
DM(K_)=AR;
AX0=DM(KMAX);
AR=AR-AX0;
IFLTJUMPWXM5;
AY0=0x0;
DM(K_)=AY0;
WXM5:
AX0=DM(TEMP1);
AY0=DM(TEMP4);
AR=AX0+AY0;
DM(TEMP1)=AR;
ASTAT=0x0;
AY1=DM(PMIN);
AX1=DM(TEMP1);
AR=AX1-AY1;
IFGTJUMPWXM6;
AX0=0x0;
DM(TEMP1)=AX0;
JUMPWXM7;
WXM6:
AY1=DM(PMAX);
AX1=DM(TEMP1);
ASTAT=0x0;
AR=AX1-AY1;
IFLTJUMPWXM7;
AY0=2500;
DM(TEMP1)=AY0;
WXM7:
AX0=DM(TEMP2);
AY0=DM(TEMP5);
AR=AX0+AY0;
DM(TEMP2)=AR;
ASTAT=0x00;
AY1=DM(PMIN);
AX1=DM(TEMP1);
AR=AX1-AY1;
IFGTJUMPWXM8;
AX0=0;
DM(TEMP2)=AX0;
JUMPWXM9;
WXM8:
AY1=DM(PMAX);
AX1=DM(TEMP1);
AR=AX1-AY1;
IFLTJUMPWXM9;
AY0=2500;
DM(TEMP1)=AY0;
WXM9:
AX0=DM(TEMP3);
AY0=DM(TEMP6);
AR=AX0+AY0;
DM(TEMP3)=AR;
ASTAT=0x0;
AY1=DM(PMIN);
AX1=DM(TEMP1);
AR=AX1-AY1;
IFGTJUMPWXM10;
AY0=0;
DM(TEMP3)=AY0;
JUMPPWMCH;
WXM10:
AY1=DM(PMAX);
AX1=DM(TEMP1);
AR=AX1-AY1;
IFLTJUMPPWMCH;
AY0=2500;
DM(TEMP3)=AY0;
PWMCH:
IOPG=0x08;
MX1=DM(TEMP1);
SI=AX1;
SR=LSHIFTSIBY-1(LO);
AX1=SR0;
AR=40;,
AR=AR+AX1;
IO(PWM0_CHA)=AR;
MX1=DM(TEMP2);
SI=AX1;
SR=LSHIFTSIBY-1(LO);
AX1=SR0;
AR=40;
AR=AR+AX1;
IO(PWM0_CHB)=AR;
MX1=DM(TEMP3);
SI=AX1;
SR=LSHIFTSIBY-1(LO);
AX1=SR0;
AR=40;
AR=AR+AX1;
IO(PWM0_CHC)=AR;
DISSEC_REG,DISSEC_DAG;
RTI;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序清单31 采用不对称规则采样法生成三相SPWM波的开环调速控制程 程序 清单 31 采用 不对称 规则 采样 生成 三相 SPWM 开环 调速 控制