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

📄 stepper.lst

📁 基于STK672-050(3A)驱动的步进电机C51源码
💻 LST
字号:
C51 COMPILER V8.05a   STEPPER                                                              10/20/2008 10:28:25 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE STEPPER
OBJECT MODULE PLACED IN Stepper.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Stepper.c BROWSE DEBUG OBJECTEXTEND

line level    source

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

  56   1              
  57   1              /* 设置为2相激励 */
  58   1              M1 = 0;
  59   1              M2 = 0;
  60   1      
  61   1              /* 设置为环形转向轨迹 */
  62   1              M4 = 1;
  63   1              M5 = 1;
  64   1              
  65   1              EN = 0;                                                 // 切断驱动输出
  66   1              RET = 0;                                                // 归位输入无效
  67   1              
  68   1              CWB = 1;                                                // 初始设置为顺时针方向
  69   1      
  70   1              while(1)
  71   1          {
  72   2                      key = keyscan();                        // 调用键盘扫描函数
  73   2                      switch(key)
  74   2                      {
  75   3                      case 0x11:                              // 0行0列,启动键
  76   3                                      EN = 1;                         // 打开驱动输出
  77   3                                      TH0 = -T/256;           // 改变T可以改变步进电机转动速度  
  78   3                                      TL0 = -T%256;
  79   3                                      TR0 = 1;                        // 定时器0开始计数
  80   3                                      break;
  81   3                              case 0x21:                              // 0行1列,停止键
  82   3                                      TR0 = 0;                        // 定时器0停止计数
  83   3                                      EN = 0;                         // 切断驱动输出
  84   3                                      break;                  
  85   3                              case 0x41:                              // 0行2列,切换转向按键
  86   3                                      CWB = ~CWB;
  87   3                                      break;
  88   3                      case 0x81:                              // 0行3列,归位键
  89   3                                      RET = 1;        
  90   3                                      delay();
  91   3                                      RET = 0;
  92   3                                      break;
  93   3                              default:break;
  94   3                       }
  95   2              }
  96   1      }
  97          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    148    ----
   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 + -