*SPEB;tsh1=tsh-0x38;//得到计算用的手柄值speek=tsh1-speed1;if(tsh1<0){speuk=0;gcur=0;}//当手柄值低于1.1V时,则认为手柄给定为零else{//否则,计算相应的转速环输出if(tsh1>=GSPEH)//限制最大转速tsh1=GSPEH;speuk=speuk+speek*SPEA-speep;//计算得转速环输出if(speuk<=0X00){speuk=0x00;gcur=0x00;}//转速环输出处理elseif(speuk>GCURHILO){//转速环输出限制,即限制最大电流约12Aspeuk=GCURHILO;gcur=GCURH;}else{//调速状态时的输出gcur=(speuk>>4)&0x0ff;}}}//-----------主程序-------------------------main(){for(;;){INIT877();//单片机复位后,先对其进行初始化off=0;//清复位标志for(;off==0;){//复位标志为零,则执行下面程序,否则复位if(curpid==1)CURPI();//电流PI运算elseif(spepid==1)SPEPI();//转速PI运算elseif(lowpower==1)POWER();elseif(shutdown==1)BREAKON();asm("CLRWDT");}}}//---------中断服务子程序---------------------#pragmainterrupt_level1voidinterruptINTS(void){if(RBIF==1){RBIF=0;sample();}elseif(ADIF==1)AD();elseif(INTF==1){shutdown=1;INTF=0;}//刹车中断来,置刹车标志}