1、程序清单31 采用不对称规则采样法生成三相SPWM波的开环调速控制程程序清单3-1 采用不对称规则采样法生成三相SPWM波的开环调速控制程序#include .SECTION/PM IVreset; JUMP start;.SECTION/PM IVint4; JUMP PWMSYNC_IRQ;.section/data data1; .VAR PITC=42166; .VAR K_=0; .VAR F_modu=480; .VAR TWOP=25736; .VAR T_THP=8579; .VAR F_THP=17157; .VAR ATOD=917; .VAR M_=0; .VAR T_Q
2、UA=625; .VAR PMAX=2350; .VAR PMIN=150; .VAR N_=0; .VAR F_CARR=40000; .VAR KMAX=0; .VAR F_M=37749; .VAR TEMP1=0x0000; .VAR TEMP2=0x0000;.VAR TEMP3=0x0000;.VAR TEMP4=0x0000;.VAR TEMP5=0x0000;.VAR TEMP6=0x0000;.VAR TEMP=0x0000;.VAR SIN_ENTRY361= 0,286,572,857,1143,1428,1713,1997,2280,2563,2845,3126,340
3、6,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
4、,15082,15191,15296,15396,15491,15582,15668,15749,15826,15897,15964,16026,16083,16135,16182,16225,16262,16294,16322,16344,16362,16374,16382,16384, /9016382,16384,16362,16344,16322,16294,16262,16225,16182,16135,16083,16026,15964,15897,15826,15749,15668,15582,15491,15396,15296,15191,15082,14968,14849,1
5、4726,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
6、,2563,2280,1991,1713,1428,1143,857,572,286,0, /18065250,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,5457
7、3,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, /27049154
8、,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
9、,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/PM program; start: DIS INT; IMASK=0x0000; IOPG=Interrup
10、t_Controller_Page;AX0=0xBBB0;IO(IPR2)=AX0;IMASK=0x0010; AX0=0x0;IO(PLLCTL)=AX0; .SECTION/PM program; 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)=A
11、X0; AX0=0x0000;IO(PWM0_STAT)=AX0; ENA INT;.SECTION/code program; ASTAT=0x00; AX0=DM(F_modu); SI=AX0;SR=LSHIFT AX0 BY -4(HI); AX0=SR1; AF=PASS 0x0000;AY0=DM(F_CARR); DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0; DIVQ AX0;DIVQ AX0;DIVQ AX0
12、;DIVQ AX0;DM(N_)=AY0; SI=AY0;SR=LSHIFT SI BY 1(LO);DM(KMAX)=SR0; ENA M_MODE;AX0=DM(F_modu); MX0=DM(F_M); MR=MX0*AX0(UU); DM(M_)=MR1; WAIT: JUMP WAIT;PWMSYNC_IRQ: .SECTION/code program; ENA SEC_REG,ENA SEC_DAG; ENA M_MODE; AX0=0;IO(PWM0_STAT)=AX0; MX0=DM(PITC); MY0=DM(K_); MR=MX0*MY0(UU); SI=MR1;SR=A
13、SHIFT SI BY 4(HI);SI=MR0;SR=SR OR LSHIFT SI BY 4(LO); MX1=SR1; MY1=DM(F_modu); MR=MX1*MY1(UU); SI=MR1;SR=LSHIFT SI BY 8(HI); SI=MR0;SR=SR OR LSHIFT SI BY 8(LO);AX1=SR1;DM(TEMP1)=AX1; AY1=DM(T_THP); AR=AX1+AY1; DM(TEMP2)=AR; AX0=DM(TWOP); AR=AR-AX0; IF LT JUMP WXM1; DM(TEMP2)=AR; WXM1:AR=DM(TEMP1);AX
14、0=DM(F_THP); AR=AR+AX0; DM(TEMP3)=AR;AX0=DM(TWOP);AR=AR-AX0; IF LT JUMP WXM2;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=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);
15、AY0=SR1; AX0=0x8000;AR=AX0 AND AY0;AX1=16384; IF EQ JUMP ZHENG1; AR=ABS AY0; AR=AX1-AR;JUMP M_S1;ZHENG1:AR=AX1+Ay0; M_S1:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT SI BY 1(HI); SI=MR0;SR=SR OR LSHIFT SI BY 1(LO);DM(TEMP1)=SR1; AX0=DM(TEMP2); AY0=DM(ATOD); MR=AX0*AY0(UU);DM(TEMP2)=MR1; AX0=DM(TEMP
16、2);I0=SIN_ENTRY; M0=AX0; AX0=DM(I0+M0); AY0=DM(M_);MR=AX0*AY0(SU); SI=MR1;SR=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);AY0=SR1; AX0=0x8000;AR=AX0 AND AY0;AX1=16384; IF EQ JUMP ZHENG2; AR=ABS AY0; AR=AX1-AR; JUMP M_S2;ZHENG2:AR=AX1+Ay0; M_S2:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT
17、SI BY 1(HI); SI=MR0;SR=SR OR LSHIFT SI BY 1(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=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);AY0=SR1; AX0=0x8000;AR=AX0 AND AY0;
18、AX1=16384;IF EQ JUMP ZHENG3; AR=ABS AY0; AR=AX1-AR;JUMP M_S3;ZHENG3:AR=AX1+Ay0; M_S3:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT SI BY 1(HI);SI=MR0;SR=SR OR LSHIFT SI BY 1(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=ASHIFT SI BY 4(HI); SI=MR
19、0;SR=SR OR LSHIFT SI BY 4(LO);MX1=SR1; MY1=DM(F_modu); MR=MX1*MY1(UU); SI=MR1;SR=LSHIFT SI BY 8(HI); SI=MR0;SR=SR OR LSHIFT SI BY 8(LO);AX1=SR1; DM(TEMP4)=AX1; AY1=DM(T_THP); AR=AX1+AY1; DM(TEMP5)=AR; AX0=DM(TWOP); AR=AR-AX0; IF LT JUMP WXM3; DM(TEMP5)=AR; WXM3:AR=DM(TEMP4); AX0=DM(F_THP); AR=AR+AX0
20、; DM(TEMP6)=AR; AX0=DM(TWOP); AR=AR-AX0; IF LT JUMP WXM4; 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=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);AY0=SR1; AX0=0x8000;
21、AR=AX0 AND AY0;AX1=16384; IF EQ JUMP ZHENG4; AR=ABS AY0; AR=AX1-AR;JUMP M_S4;ZHENG4:AR=AX1+Ay0; M_S4:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT SI BY 1(HI); SI=MR0;SR=SR OR LSHIFT SI BY 1(LO);DM(TEMP4)=SR1; AX0=DM(TEMP5); AY0=DM(ATOD); MR=AX0*AY0(UU);DM(TEMP5)=MR1; AX0=DM(TEMP5);I0=SIN_ENTRY; M0=
22、AX0; AX0=DM(I0+M0); AY0=DM(M_); MR=AX0*AY0(SU);SI=MR1;SR=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);AY0=SR1; AX0=0x8000;AR=AX0 AND AY0;AX1=16384; IF EQ JUMP ZHENG5; AR=ABS AY0; AR=AX1-AR;JUMP M_S5;ZHENG5:AR=AX1+Ay0; M_S5:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT SI BY 1(HI); SI=MR0;S
23、R=SR OR LSHIFT SI BY 1(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=ASHIFT SI BY 7(HI); SI=MR0;SR=SR OR LSHIFT SI BY 7(LO);AY0=SR1; AX0=0x8000;AR=AX0 AND AY0;AX1=16384; IF EQ JUM
24、P ZHENG5; AR=ABS AY0; AR=AX1-AR;JUMP M_S6;ZHENG6:AR=AX1+AY0; M_S6:AY1=DM(T_QUA); MR=AR*AY1(UU);SI=MR1;SR=ASHIFT SI BY 1(HI); SI=MR0;SR=SR OR LSHIFT SI BY 1(LO);DM(TEMP6)=SR1; AR=DM(K_); AR=AR+1;DM(K_)=AR;AX0=DM(KMAX); AR=AR-AX0;IF LT JUMP WXM5; AY0=0x0;DM(K_)=AY0; WXM5:AX0=DM(TEMP1); AY0=DM(TEMP4);
25、AR=AX0+AY0; DM(TEMP1)=AR;ASTAT=0x0; AY1=DM(PMIN); AX1=DM(TEMP1);AR=AX1-AY1;IF GT JUMP WXM6; AX0=0x0;DM(TEMP1)=AX0; JUMP WXM7;WXM6:AY1=DM(PMAX); AX1=DM(TEMP1);ASTAT=0x0; AR=AX1-AY1;IF LT JUMP WXM7; AY0=2500;DM(TEMP1)=AY0; WXM7:AX0=DM(TEMP2);AY0=DM(TEMP5);AR=AX0+AY0; DM(TEMP2)=AR;ASTAT=0x00; AY1=DM(PM
26、IN); AX1=DM(TEMP1);AR=AX1-AY1;IF GT JUMP WXM8; AX0=0;DM(TEMP2)=AX0; JUMP WXM9;WXM8:AY1=DM(PMAX); AX1=DM(TEMP1);AR=AX1-AY1;IF LT JUMP WXM9; 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;IF GT JUMP WXM10; AY0=0;DM(TE
27、MP3)=AY0; JUMP PWMCH;WXM10:AY1=DM(PMAX); AX1=DM(TEMP1);AR=AX1-AY1;IF LT JUMP PWMCH; AY0=2500;DM(TEMP3)=AY0; PWMCH:IOPG=0x08;MX1=DM(TEMP1); SI=AX1;SR=LSHIFT SI BY -1(LO); AX1=SR0;AR=40; ,AR=AR+AX1;IO(PWM0_CHA)=AR; MX1=DM(TEMP2); SI=AX1;SR=LSHIFT SI BY -1(LO); AX1=SR0;AR=40; AR=AR+AX1;IO(PWM0_CHB)=AR; MX1=DM(TEMP3); SI=AX1;SR=LSHIFT SI BY -1(LO); AX1=SR0;AR=40; AR=AR+AX1;IO(PWM0_CHC)=AR; DIS SEC_REG,DIS SEC_DAG; RTI;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1