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

📄 bjmd.lst

📁 步进电机驱动,单步驱动,完整代码,用keil c51编写的.
💻 LST
字号:
C51 COMPILER V8.12   BJMD                                                                  03/30/2008 11:14:53 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE BJMD
OBJECT MODULE PLACED IN bjmd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bjmd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <STC89C51RC.h>
   2          #include <intrins.h>
   3          // ******************************************************* 
   4          // 管脚定义
   5          // 由P1输出驱动信息
   6          // ******************************************************* 
   7          // 变量定义
   8          unsigned char temes; // 定时器 定时时间延长变量 
   9          unsigned char phase; // 马达驱动方式 
  10          unsigned char steps; // 设定步数
  11          unsigned char dw;    // 定位开始变量
  12          unsigned char lr;    // 定位正转或反转变量
  13          unsigned char dw_no;  // 定位时执行多少个驱动信号
  14          
  15          // ******************************************************* 
  16          // 函数声明
  17          void init_mcu (void);
  18          
  19          // *******************************************************
  20          // 主函数
  21          void main (void)
  22          {   
  23   1              init_mcu ();
  24   1              while (1)
  25   1              {     
  26   2                      //程序是在 定时器中断中完成的
  27   2              }
  28   1      }
  29          
  30          // *******************************************************
  31          // 单片机初始化 子函数 
  32          // 设定 寄存器、变量初值
  33          
  34          void init_mcu (void)
  35          {
  36   1              TMOD = 0x01;    //T0 工作在方式1 16位计数器
  37   1              TH0 = 0x3C;   // 预先 设定定时器 初值50ms
  38   1              TL0 = 0xB0;
  39   1              EA = 1;     // 开启 总中断
  40   1              ET0 = 1;    // 开启定时器0的中断功能 
  41   1              TR0 = 1;    // 启动定时器0 
  42   1       
  43   1              temes = 0;  // 时间计数初值从0开始
  44   1              phase=0x33; // 电机驱动方式为2相
  45   1              P1=phase;       // 初始化P1接口数据
  46   1              steps=200;    // 设定走200步为一个周期
  47   1              dw=0;       // dw=0表示定位处理,dw=1表示非定位处理
  48   1              lr=0;       // lr=0表示正转,lr=1表示反转
  49   1              dw_no=4;    // dw_no=4表示定位时先送出4个驱动信号
  50   1      }
  51          
  52          // *******************************************************
  53          // 定时器0中断 子函数,产生50ms定时
  54          void timer0 (void)  interrupt 1    
  55          {  
C51 COMPILER V8.12   BJMD                                                                  03/30/2008 11:14:53 PAGE 2   

  56   1              TH0 =0x3C; //重新设置定时器初值为50ms
  57   1              TL0 =0xB0; 
  58   1       
  59   1              if (++temes==10)  //够了500ms就开始处理过程
  60   1              {
  61   2                      TR0=0;  //关闭定时器0
  62   2                      temes = 0;   //计数器 清零
  63   2                      
  64   2                      if (dw == 0)   //程序开始先执行定位程序
  65   2                      {
  66   3                              if (dw_no-->0)
  67   3                              {               
  68   4                                      phase=_crol_(phase,1); //循环左移一位转到下一个信号
  69   4                                      P1=phase;   //输出驱动信号
  70   4                              }
  71   3                              else
  72   3                              {
  73   4                                      dw=1;  //设为非定位处理
  74   4                              }
  75   3                      }
  76   2                      else  //开始正转或反转
  77   2                      {
  78   3                              if (lr==0)      //      开始正转处理
  79   3                              {
  80   4                                      if (steps-->0)  //正转200步
  81   4                                      {       
  82   5                                              phase=_crol_(phase,1); //循环左移一位转到下一个信号     
  83   5                                              P1=phase;  //输出驱动信号                                       
  84   5                                      }
  85   4                                      else
  86   4                                      {
  87   5                                              lr=1;   // 设为反转处理
  88   5                                              steps=200;  // 重设步数
  89   5                                      }                               
  90   4                              }
  91   3                              else            // 开始反转处理
  92   3                              {
  93   4                                      if (steps-->0)  //反转200步
  94   4                                      {                       
  95   5                                              phase=_cror_(phase,1); //循环右移一位转到下一个信号
  96   5                                              P1=phase;  //输出驱动信号                               
  97   5                                      }
  98   4                                      else
  99   4                                      {
 100   5                                              lr=0;  // 设为正转处理
 101   5                                              steps=200;  // 重设步数
 102   5                                      }                                                                               
 103   4                              }
 104   3                      }       
 105   2                      TR0=1; //启动定时器0
 106   2              }
 107   1      }
 108          
 109          // *******************************************************
 110          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    177    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.12   BJMD                                                                  03/30/2008 11:14:53 PAGE 3   

   DATA SIZE        =      6    ----
   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 + -