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

📄 stepper.lst

📁 51单片机C语言应用程序设计实例精讲.rar
💻 LST
字号:
C51 COMPILER V7.02b   STEPPER                                                              12/10/2005 19:18:44 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE STEPPER
OBJECT MODULE PLACED IN Stepper.OBJ
COMPILER INVOKED BY: E:\EDATOOLS\KEILC7.0\C51\BIN\C51.EXE Stepper.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

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

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


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 + -