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

📄 stepper.lst

📁 单片机使用stk642-050芯片控制四相电机。
💻 LST
字号:
C51 COMPILER V7.06   STEPPER                                                               02/12/2009 10:02:12 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE STEPPER
OBJECT MODULE PLACED IN Stepper.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Stepper.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include "Stepper.h"
   3          
   4          /* 定时器0服务子程序 */
   5          void time0() interrupt 1 using 1  // 用定时器0中断来产生CLK时钟
   6          {
   7   1              /* 定时10ms,产生20ms周期的时钟,也就是50Hz的时钟 */
   8   1              TH0 = -T/256;  
   9   1              TL0 = -T%256;
  10   1              CLK = ~CLK;
  11   1      }
  12          
  13          void time1() interrupt 3 using 3  // 用定时器0中断来产生CLK时钟
  14          {
  15   1              /* 定时10ms,产生20ms周期的时钟,也就是50Hz的时钟 */
  16   1              TH1 = -T/256;  
  17   1              TL1 = -T%256;
  18   1              CLK1 = ~CLK1;
  19   1      }
  20          
  21          /* 键消抖延时函数 */
  22          void delay(void)
  23          {
  24   1              uchar i;
  25   1              for (i=300;i>0;i--);
  26   1      }
  27          
  28          /* 键扫描函数 */
  29          uchar keyscan(void)
  30          {
  31   1              uchar scancode,tmpcode;
  32   1              P1 = 0xf0;                                                              // 发全0行扫描码
  33   1              if ((P1&0xf0)!=0xf0)                                    // 若有键按下
  34   1              {
  35   2                      delay();                                                        // 延时去抖动
  36   2                      if ((P1&0xf0)!=0xf0)                            // 延时后再判断一次,去除抖动影响
  37   2                      {
  38   3                              scancode = 0xfe;
  39   3                              while((scancode&0x10)!=0)               // 逐行扫描
  40   3                              {
  41   4                                      P1 = scancode;                          // 输出行扫描码
  42   4                                      if ((P1&0xf0)!=0xf0)            // 本行有键按下
  43   4                                      {
  44   5                                              tmpcode = (P1&0xf0)|0x0f;
  45   5      
  46   5                                              /* 返回特征字节码,为1的位即对应于行和列 */
  47   5                                              return((~scancode)+(~tmpcode));
  48   5                                      }
  49   4                                      else scancode = (scancode<<1)|0x01;             // 行扫描码左移一位
  50   4                              }
  51   3                      }
  52   2              }
  53   1              return(0);                                                              // 无键按下,返回值为0  
  54   1      }
  55          
C51 COMPILER V7.06   STEPPER                                                               02/12/2009 10:02:12 PAGE 2   

  56          /* 主程序 */
  57          void main()
  58          { 
  59   1              /*uchar key;*/
  60   1      
  61   1              TMOD = 0x01;                                    // 设置定时器0工作模式
  62   1              TMOD = 0x11;
  63   1      
  64   1              EA = 1;
  65   1              ET0 = 1;
  66   1              ET1 = 1;
  67   1      
  68   1              
  69   1              /* 设置为2相激励 */
  70   1              M1 = 0;
  71   1              M2 = 0;
  72   1      
  73   1              /* 设置为4相激励 */
  74   1              M1 = 1;
  75   1              M2 = 1;
  76   1              M11 = 1;
  77   1              M12 = 1;
  78   1      
  79   1              /* 设置为环形转向轨迹 */
  80   1              M4 = 1;
  81   1              M5 = 1;
  82   1              M14 = 1;
  83   1              M15 = 1;
  84   1              
  85   1              EN = 0;                                                 // 切断驱动输出
  86   1              EN1 = 0;        
  87   1              RET = 0;                                                // 归位输入无效
  88   1              RET1 = 0;
  89   1              CWB = 1;                                                // 初始设置为顺时针方向
  90   1              CWB1 = 1;
  91   1              while(1)
  92   1          {
  93   2              /*      key = keyscan();                        // 调用键盘扫描函数
  94   2                      switch(key)
  95   2                      {
  96   2                      case 0x11:      */                      // 0行0列,启动键
  97   2                              if(S01==0)
  98   2                          {
  99   3                                      EN = 1;                         // 打开驱动输出
 100   3                                      TH0 = -T/256;           // 改变T可以改变步进电机转动速度  
 101   3                                      TL0 = -T%256;
 102   3                                      TR0 = 1;                        // 定时器0开始计数
 103   3                              }
 104   2                              else
 105   2                              {
 106   3                                      TR0=0;
 107   3                                      EN=0;
 108   3                              }
 109   2                              if(S02==0)
 110   2                              {
 111   3                                      EN1 = 1;                                // 打开驱动输出
 112   3                                      TH1 = -T/256;           // 改变T可以改变步进电机转动速度  
 113   3                                      TL1 = -T%256;
 114   3                                      TR1 = 1;                        // 定时器0开始计数
 115   3                              }
 116   2                              else
 117   2                              {
C51 COMPILER V7.06   STEPPER                                                               02/12/2009 10:02:12 PAGE 3   

 118   3                                      TR1=0;
 119   3                                      EN1=0;
 120   3                              }
 121   2      
 122   2              /*                      break;
 123   2                              case 0x21:                              // 0行1列,停止键
 124   2                                      TR0 = 0;                        // 定时器0停止计数
 125   2                                      EN = 0;                         // 切断驱动输出
 126   2                                      break;                  
 127   2                              case 0x41:                              // 0行2列,切换转向按键
 128   2                                      CWB = ~CWB;
 129   2                                      break;
 130   2                      case 0x81:                              // 0行3列,归位键
 131   2                                      RET = 1;        
 132   2                                      delay();
 133   2                                      RET = 0;
 134   2                                      break;
 135   2                              default:break;
 136   2                       }*/
 137   2              }
 138   1      }
 139          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    169    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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