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

📄 start.lst

📁 基于51单片机控制步进电机的程序
💻 LST
字号:
C51 COMPILER V8.12   START                                                                 05/26/2009 09:07:39 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<start.h>
   3          #include<key.h>
   4          
   5          void delay500us(float count)    //100us*count
   6          {
   7   1          unsigned int i,j;
   8   1              for(j=0;j<count;j++)
   9   1                for(i=0;i<17;i++)
  10   1                ;     
  11   1      }
  12          
  13          ////////////////////////刹车、反转、正转都可以写成函数
  14          
  15          void shache(void)
  16          {
  17   1              P2_2=1;
  18   1          P2_0=1;
  19   1          P2_5=1;
  20   1          P2_4=1;      //两个电机刹停
  21   1              P2_2=1;
  22   1              P2_0=1;
  23   1              P2_5=1;
  24   1              P2_4=1;
  25   1      }
  26          void zheng(float a)
  27          {
  28   1          float z=a;
  29   1              P2_2=1;
  30   1              P2_0=0;
  31   1              P2_5=1;
  32   1              P2_4=0;
  33   1              delay500us(z);   //正转
  34   1              P2_2=0;
  35   1              P2_0=0;
  36   1              P2_5=0;
  37   1              P2_4=0;
  38   1              delay500us(z);
  39   1      }
  40          void fan(float b)
  41          {
  42   1          float z=b;
  43   1          P2_2=0;
  44   1              P2_0=1;
  45   1              P2_5=0;
  46   1              P2_4=1;
  47   1              delay500us(z);
  48   1              P2_2=0;
  49   1              P2_0=0;
  50   1              P2_5=0;
  51   1              P2_4=0;
  52   1              delay500us(z);
  53   1      }
  54          void maichong0(unsigned int x,unsigned int y,float z)  //x和y分别是脉冲的周期个数,z是脉冲的周期
  55          {
C51 COMPILER V8.12   START                                                                 05/26/2009 09:07:39 PAGE 2   

  56   1      
  57   1          float a;
  58   1              z=2000*z;//计算count
  59   1              a=z;  //           500us*count
  60   1          P2_1=1;     //两个使能端有效;
  61   1              P2_3=1;
  62   1          if(zhengbujin==1||fanbujin==1)
  63   1              {
  64   2              if(zhengbujin==1) //先正传后反转
  65   2                  {
  66   3                          unsigned int j;
  67   3                          for(j=0;j<x;j++)  //正传
  68   3                              {
  69   4                      zheng(a);
  70   4                              }
  71   3                              shache();
  72   3                          for(j=0;j<y;j++)    //反转
  73   3                              {
  74   4                      fan(a);
  75   4                              }
  76   3      
  77   3                      }
  78   2      
  79   2                      else if(fanbujin==1)   //先反后正
  80   2                      {
  81   3                          unsigned int j;
  82   3                          for(j=0;j<y;j++)  //反传
  83   3                              {
  84   4                      fan(a);
  85   4                              }
  86   3                              shache();
  87   3                          for(j=0;j<x;j++)    //正转
  88   3                              {
  89   4                      zheng(a);
  90   4                          }
  91   3         
  92   3                  }
  93   2              }
  94   1              else if(zhengjuli==1||fanjuli==1)
  95   1              {
  96   2                  
  97   2              if(zhengjuli==1) //先正传后反转
  98   2                  {
  99   3                          unsigned int j;
 100   3                          for(j=0;j<x;j++)  //正传
 101   3                              {
 102   4                      zheng(a);
 103   4                              }
 104   3                              shache();
 105   3                          for(j=0;j<y;j++)    //反转
 106   3                              {
 107   4                      fan(a);
 108   4      
 109   4                           }
 110   3                       }
 111   2      
 112   2                       else if(fanjuli==1)//先反后正
 113   2                       {
 114   3                          unsigned int j;
 115   3                          for(j=0;j<y;j++)  //反传
 116   3                              {
 117   4                      fan(a);
C51 COMPILER V8.12   START                                                                 05/26/2009 09:07:39 PAGE 3   

 118   4                              }
 119   3                              shache();
 120   3                          for(j=0;j<x;j++)    //正转
 121   3                              {
 122   4                      zheng(a);       
 123   4                          }
 124   3                  }
 125   2            }
 126   1      }
 127          
 128          void startset(void)
 129          {
 130   1              float sudu;
 131   1          switch(csudu)
 132   1          {
 133   2                case 1: sudu=1.0;break;
 134   2                case 2: sudu=2.0;break;
 135   2                case 3: sudu=3.0;break;
 136   2                case 4: sudu=4.0;break;
 137   2                case 5: sudu=5.0;break;
 138   2                case 6: sudu=6.0;break;
 139   2                case 7: sudu=7.0;break;
 140   2                case 8: sudu=8.0;break;
 141   2                case 9: sudu=9.0;break;
 142   2                default:break;
 143   2          }
 144   1      
 145   1      
 146   1          if(zhengbujin==1||fanbujin==1)
 147   1              {       
 148   2      
 149   2                  sudu=0.45/(sudu*20);//求得高电平低电平的时间
 150   2                  maichong0(czhengbujin,cfanbujin,sudu);
 151   2              }
 152   1      
 153   1              else if(zhengjuli==1 || fanjuli==1)    
 154   1              {
 155   2                      unsigned int czhengjuli0=czhengjuli*10/0.45;    //把距离转化成步数
 156   2                      unsigned int cfanjuli0=cfanjuli*10/0.45;                 //把距离转化成步数,一步就是一个周期的脉冲
 157   2                      sudu=0.45/(sudu*20);//求得高电平低电平的时间
 158   2                      maichong0(czhengjuli0,cfanjuli0,sudu) ;
 159   2              }
 160   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    896    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      36
   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 + -