⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mocontrol.lst

📁 一个步进电机的驱动C程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 194   4                                                      cTime = 2;
 195   4                                                      break;
 196   4      
 197   4                                              default:
 198   4                                                      break;
 199   4                                              }
 200   3                              default:
 201   3                                      break;
 202   3                      }
 203   2              DogReset();
 204   2              }
 205   1      }
 206          /**************************************************************************
 207          *    函数原型: void SpeedControl(bit Drt, uint TurnNum);
 208          *    功    能: 处理速度变化(ctemp采用范围控制,Pre_Pulse 脉冲采用精确控制)
 209          **************************************************************************/
 210          void SpeedControl(bit Drt){
 211   1              uchar i;
 212   1              if(b_Power){
 213   2                      if(Drt){
 214   3                              P1&=0xf8;
 215   3                              P1|=StepTab1[i++];
 216   3                              delay_1us(10);
 217   3                              P1&=0xf8;
 218   3                      }
 219   2                      else{
 220   3                              P1&=0xf8;
 221   3                              P1|=StepTabRev1[i++];
 222   3                              delay_1us(10);
 223   3                              P1&=0xf8;
 224   3                      }
 225   2                      if(i>2){
 226   3                              i=0;
 227   3                              if(++SetNum >= vSetNum){
 228   4      //                              b_Power = STOP;
 229   4                              }
 230   3                      }
 231   2              }
 232   1      }
 233          
 234          /**************************************************************************
 235          *    函数原型: void SpeedControl(bit Drt, uint TurnNum);
 236          *    功    能: 处理速度变化(ctemp采用范围控制,Pre_Pulse 脉冲采用精确控制)
 237          **************************************************************************/
 238          /*
 239          void SpeedControl(bit Drt){
 240                  uchar i;
 241                  if(b_Power){
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 5   

 242                          if(Drt){
 243                                  P1&=0xf8;
 244                                  P1|=StepTab1[i++];
 245                          }
 246                          else{
 247                                  P1&=0xf8;
 248                                  P1|=StepTabRev1[i++];
 249                          }
 250                          if(i>5){
 251                                  i=0;
 252                                  if(++SetNum >= vSetNum){
 253          //                              b_Power = STOP;
 254                                  }
 255                          }
 256                  }
 257          }
 258          
 259          /**************************************************************************
 260          *    函数原型: void Para_initial(void);
 261          *    功    能: 参数初始化
 262          **************************************************************************/
 263          void Para_initial(void){
 264   1      
 265   1              b_Power         =       STOP;
 266   1              SpeedType       =       WaitSpeed;
 267   1              cDY_Clock       =       0xff;
 268   1              KeyNum=0;
 269   1      
 270   1              cT01ms          =       vT01ms;
 271   1              cT10ms          =       vT10ms;
 272   1              cT100ms         =       vT100ms;
 273   1              cT01s           =       vT01S;
 274   1      
 275   1              Time_01ms       =       0;
 276   1      
 277   1      
 278   1      }
 279          
 280          
 281          /**************************************************************************
 282          *    函数原型: void system_initial(void);
 283          *    功    能: 系统初始化
 284          **************************************************************************/
 285          void system_initial(void){
 286   1      
 287   1              IE=0;
 288   1      
 289   1              DogReset();                             // 已针对 STC89C58RD+ 作修改.06-04-06
 290   1              Para_initial();
 291   1      
 292   1              TCON    =0x50;                          // TR0=1
 293   1              SCON    =0x50;
 294   1              TMOD    =0x21;                          // T0:Time 16bit;       T1:8位自动重装载.
 295   1      
 296   1              TH0 =vT0HVal;                           // T0:系统计时.
 297   1              TL0 =vT0LVal;
 298   1              ET0 =1;
 299   1              TR0 =1;                                         // 启动波特率发生器
 300   1      
 301   1      
 302   1              TH1 = vBaudTime;                        // 波特率目前为9600Hz
 303   1              PCON&=0x7f;                                     // 串口通信速率倍数为1
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 6   

 304   1      
 305   1              ET1 =1;
 306   1              TR1 =0;                                         // 启动波特率发生器
 307   1              ES  =1;                                         // 允许串口中断
 308   1      
 309   1              IP      =0x02;                          // T0 优先级高
 310   1              IPH =0x12;                                      //PT2H=1,PT0H=1
 311   1      
 312   1              EA  =1;
 313   1      
 314   1      
 315   1      }
 316          
 317          /**************************************************************************
 318          *    函数原型: void main(void);
 319          *    功    能: 主程序
 320          **************************************************************************/
 321          void main(void){
 322   1      
 323   1              system_initial();
 324   1      
 325   1              while(1){
 326   2      
 327   2                      DogReset();
 328   2      
 329   2                      ButtonHandle();
 330   2      
 331   2      //              if(b_Power){
 332   2      //                      SpeedControl(Forward);
 333   2      //              }
 334   2      
 335   2              }
 336   1      }
 337          
 338          /**************************************************************************
 339          *    函数原型: void T0_INT(void) interrupt 1 using 1;
 340          *    功    能: 全局定时
 341          **************************************************************************/
 342          void T0_INT(void) interrupt 1 using 0{
 343   1      
 344   1              TH0     =       vT0HVal;                                // 时基0.1ms
 345   1              TL0     =       vT0LVal;
 346   1      
 347   1      /*
 348   1              if(Time_01ms++>12){
 349   1                      Time_01ms=0;
 350   1              }
 351   1      */
 352   1      
 353   1              if(!(--cT01ms)){                                //1ms
 354   2                      cT01ms=vT01ms;
 355   2      
 356   2      
 357   2                      if(!(--cT10ms)){                        //10ms
 358   3                              cT10ms=vT10ms;
 359   3      
 360   3                              SpeedControl(Forward);
 361   3      
 362   3                              if(!(--cT100ms)){               //100ms
 363   4      
 364   4                                      cT100ms=vT100ms;
 365   4      
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 7   

 366   4                                      if(!(--cT01s)){         //1s
 367   5                                              cT01s=vT01S;
 368   5      
 369   5                                      }
 370   4                              }
 371   3                      }
 372   2              }
 373   1      }
 374          
 375          /**************************************************************************
 376          *   END
 377          *   END
 378          **************************************************************************/
 379          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    396    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       1
   IDATA SIZE       =     57    ----
   BIT SIZE         =      2       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -