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

📄 mocontrol.lst

📁 一个步进电机的驱动C程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MOCONTROL
OBJECT MODULE PLACED IN MoControl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MoControl.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          // 目标器件: STC12C4052AD
   2          // 系统频率: 外部时钟,12M.
   3          
   4          #include <STC12C2052AD.H>
   5          #include <intrins.h>
   6          #define         uint    unsigned int
   7          #define         uchar   unsigned char
   8          
   9          
  10          #define         DogReset()                      WDT_CONTR=0x36
  11          
  12          #define         vBtnVal_Null            0x00    // ceeback/20070316
  13          #define         vBtnVal_StartUp         0x01    //起停
  14          #define         vBtnVal_HiSpeed         0x02    //高速
  15          #define         vBtnVal_MiSpeed         0x04    //中速
  16          #define         vBtnVal_LoSpeed         0x08    //低速
  17          
  18          #define         vBtnAct_Null            0
  19          #define         vBtnAct_Push            1
  20          #define         vBtnAct_Pop                     2
  21          #define         vBtnAct_Keep            3
  22          
  23          #define         vT0HVal                         0xff
  24          #define         vT0LVal                         0x9c
  25          
  26          #define         vBaudTime                       0xfa
  27          
  28          // T0 定时 0.1ms.作为系统计时用,
  29          #define         vT01ms                          10
  30          #define         vT10ms                          10
  31          #define         vT100ms                         10
  32          #define         vT01S                           10              // 1 s = 10 ms * 100
  33          
  34          
  35          #define         WaitSpeed                       0
  36          #define         LoSpeed                         1
  37          #define         MiSpeed                         2
  38          #define         HiSpeed                         3
  39          
  40          
  41          #define         STOP            0
  42          #define         WORK            1
  43          
  44          #define         Forward                 1
  45          #define         Backward                        0
  46          
  47          #define         vSetNum         30000
  48          
  49          uchar   idata   KeyNum;
  50          uchar   idata   cBtnVal;                        // 按钮取值
  51          uchar   idata   SpeedType;
  52          
  53          // 定时器延时
  54          uchar   idata   cT01ms;
  55          uchar   idata   cT10ms;
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 2   

  56          uchar   idata   cT100ms;
  57          uchar   idata   cT01s;
  58          
  59          uchar   idata   Time_01ms;
  60          
  61          uchar   idata   cDY_Clock;                      // 时钟计时
  62          
  63          //正转
  64          uchar   idata   StepTab1[6]={0x01,0x02,0x04};                   //三相单三拍
  65          uchar   idata   StepTab2[6]={0x03,0x05,0x06};                   //三相双三拍
  66          uchar   idata   StepTab3[12]={0x01,0x03,0x02,0x05,0x04,0x06};           //三相六拍
  67          
  68          //反转
  69          uchar   idata   StepTabRev1[6]={0x02,0x01,0x04};                //三相单三拍
  70          uchar   idata   StepTabRev2[6]={0x05,0x03,0x06};                //三相双三拍
  71          uchar   idata   StepTabRev3[12]={0x02,0x05,0x01,0x03,0x04,0x06};        //三相六拍
  72          
  73          uchar cTime;
  74          uint SetNum;
  75          uint TurnNum;
  76          
  77          bit                     b_Power;                                // 电机起停标志
  78          bit                     SpeedFlag;
  79          
  80          //-----------------------------------------------------------------------------
  81          // 函数声明
  82          //-----------------------------------------------------------------------------
  83          
  84          void Para_initial(void);
  85          
  86          
  87          /**************************************************************************
  88          *    函数原型: void delay_1us(uint Count)
  89          *    功    能: 延时Count个1us
  90          **************************************************************************/
  91          void delay_1us(register uint Count){
  92   1      
  93   1              for(;Count>0;Count--){
  94   2      //              _nop_();
  95   2      //              DogReset();
  96   2                      }
  97   1      }
  98          
  99          /**************************************************************************
 100          *    函数原型: void delay_ms(uint Count)
 101          *    功    能: 延时Count个ms
 102          **************************************************************************/
 103          void delay_ms(register uint Count){
 104   1              register uchar T;
 105   1      
 106   1              for(;Count>0;Count--){
 107   2                      for(T=0;T<80;T++){
 108   3                              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 109   3                              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
 110   3                      }
 111   2                      DogReset();
 112   2              }
 113   1      }
 114          
 115          
 116          /**************************************************************************
 117          *    函数原型: uchar ButtonScan(void);
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 3   

 118          *    功    能: 对按钮进行扫描,返回按钮值
 119          **************************************************************************/
 120          uchar key_scan(void){
 121   1      
 122   1              uchar ikey;
 123   1              ikey=~(P3&0x0f)&0x0f;
 124   1              return(ikey&0x0f);
 125   1      }
 126          
 127          /**************************************************************************
 128          *    函数原型: uchar ButtonScan(void);
 129          *    功    能: 对按钮进行扫描,返回按钮值
 130          **************************************************************************/
 131          uchar ButtonAction(void){
 132   1              uchar cButton;
 133   1      
 134   1              cButton=key_scan();
 135   1              if(cButton==cBtnVal){
 136   2                      if(cButton==vBtnVal_Null)       // 无按键
 137   2                              return(vBtnAct_Null);
 138   2      
 139   2                      else    // 按键保持
 140   2                              return(vBtnAct_Keep);
 141   2              }
 142   1              else{
 143   2                      delay_ms(20);
 144   2                      if(key_scan()==cButton){
 145   3                              cBtnVal=cButton;
 146   3      
 147   3                              if(cButton==vBtnVal_Null){      // 按键弹起
 148   4                                      return(vBtnAct_Pop);
 149   4                              }
 150   3                              else{                                           // 按键按下
 151   4                                      return(vBtnAct_Push);
 152   4                              }
 153   3                      }
 154   2              }
 155   1      }
 156          
 157          /**************************************************************************
 158          *    函数原型: void ButtonHandle(void);
 159          *    功    能: 处理按钮输入
 160          **************************************************************************/
 161          void ButtonHandle(void){
 162   1      
 163   1              uchar cBtnType;
 164   1              DogReset();
 165   1              cBtnType=ButtonAction();
 166   1              if(cBtnType==vBtnAct_Push){
 167   2      
 168   2                      switch(cBtnVal){
 169   3      
 170   3                              case vBtnVal_StartUp:
 171   3                                      if(++KeyNum>3){
 172   4                                              KeyNum=0;
 173   4                                      }
 174   3                                      switch(KeyNum){
 175   4                                              case WaitSpeed:
 176   4                                                      b_Power=STOP;
 177   4                                                      break;
 178   4      
 179   4                                              case LoSpeed:
C51 COMPILER V7.10   MOCONTROL                                                             12/17/2007 11:35:15 PAGE 4   

 180   4                                                      SetNum = 0;
 181   4                                                      b_Power = WORK;
 182   4                                                      cTime = 10;
 183   4                                                      break;
 184   4      
 185   4                                              case MiSpeed:
 186   4                                                      SetNum = 0;
 187   4                                                      b_Power = WORK;
 188   4                                                      cTime = 6;
 189   4                                                      break;
 190   4      
 191   4                                              case HiSpeed:
 192   4                                                      SetNum = 0;
 193   4                                                      b_Power = WORK;

⌨️ 快捷键说明

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