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

📄 s_ motor-key.lst

📁 本人正在学习C语言开发
💻 LST
字号:
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         12/30/2006 13:49:40 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE S__MOTOR_KEY
OBJECT MODULE PLACED IN S_ MOTOR-key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE S_ MOTOR-key.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1           
   2          /******************************************************************
   3          /*                                                                *
   4          /* KT900单片机开发系统演示程序 - 步进电机控制程序                 *
   5          /*                                                                *
   6          /* 步进电机启动时,转速由慢到快逐步加速。                         *
   7          /*                                                                *
   8          /* 邮箱: 89s51@163.com                                           *
   9          /* 网站: http://www.150000.com                                   *
  10          /* 作者: 007                                                     *
  11          /* 时间: 2006/05/18                                              *
  12          /*                                                                *
  13          /*【版权】COPYRIGHT(C)南方电子 www.150000.com ALL RIGHTS RESERVED *
  14          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!      *
  15          /*                                                                *
  16          /******************************************************************/
  17              
  18          #include <reg51.h>       //51芯片管脚定义头文件
  19          #include <intrins.h>     //内部包含延时函数 _nop_();
  20          
  21          #define uchar unsigned char
  22          #define uint  unsigned int
  23          
  24          uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
  25          uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
  26          
  27          sbit  K1   = P1^4;       //正转
  28          sbit  K2   = P1^5;       //反转
  29          sbit  K3   = P1^6;       //停止
  30          sbit  K4   = P1^7; 
  31          sbit  BEEP = P3^7;       //蜂鸣器
  32                
  33          /********************************************************/
  34          /*                                                  
  35          /* 延时t毫秒 
  36          /* 11.0592MHz时钟,延时约1ms                                     
  37          /*                                                      
  38          /********************************************************/
  39          void delay(uint t)
  40          {                           
  41   1         uint k;
  42   1         while(t--)
  43   1         {
  44   2           for(k=0; k<125; k++)
  45   2           { }
  46   2         }
  47   1      }
  48          
  49          /**********************************************************/
  50          void delayB(uchar x)    //x*0.14MS
  51           {
  52   1         uchar i;
  53   1         while(x--)
  54   1         {
  55   2           for (i=0; i<13; i++)
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         12/30/2006 13:49:40 PAGE 2   

  56   2           { }
  57   2         }
  58   1       }
  59          
  60          /**********************************************************/
  61          void beep()
  62           {
  63   1         uchar i;
  64   1         for (i=0;i<100;i++)
  65   1          { 
  66   2           delayB(4);
  67   2           BEEP=!BEEP;                 //BEEP取反
  68   2          } 
  69   1           BEEP=1;                    //关闭蜂鸣器
  70   1       }
  71          
  72          /********************************************************/
  73          /*
  74          /*步进电机正转
  75          /*
  76          /********************************************************/
  77          void  motor_ffw()
  78           { 
  79   1         uchar i;
  80   1         uint  j;
  81   1         for (j=0; j<12; j++)         //转1*n圈 
  82   1          { 
  83   2                  if(K4==0)
  84   2              {break;}                //退出此循环程序
  85   2            for (i=0; i<8; i++)       //一个周期转30度
  86   2              {
  87   3                P1 = FFW[i];          //取数据
  88   3                delay(15);            //调节转速
  89   3              }
  90   2          }
  91   1       }
  92          
  93          /********************************************************/
  94          /*
  95          /*步进电机反转
  96          /*
  97          /********************************************************/
  98          void  motor_rev()
  99          {
 100   1           uchar i;
 101   1               uint  j;
 102   1               for (j=0; j<12; j++)       //转1×n圈
 103   1            {
 104   2                  if(K4==0)
 105   2               {break;}               //退出此循环程序
 106   2              for (i=0; i<8; i++)     //一个周期转30度
 107   2              {
 108   3                P1 = REV[i];          //取数据
 109   3                delay(15);            //调节转速
 110   3              }
 111   2            }
 112   1       }
 113          
 114          /********************************************************
 115          *                                                       
 116          *  主程序                                               
 117          *                                                      
C51 COMPILER V8.05a   S__MOTOR_KEY                                                         12/30/2006 13:49:40 PAGE 3   

 118          *********************************************************/
 119          
 120          main()
 121           { 
 122   1            uchar r,N=5;             //N 步进电机运转圈数
 123   1         while(1)
 124   1          {  
 125   2            if(K1==0)
 126   2                {
 127   3              beep();
 128   3                      for(r=0;r<N;r++)
 129   3               { 
 130   4                         motor_ffw();       //电机正转
 131   4                         if(K4==0)
 132   4                 {beep();break;}    //退出此循环程序
 133   4                   }
 134   3            }
 135   2                else if(K2==0)
 136   2             { 
 137   3                  beep();
 138   3                      for(r=0;r<N;r++)
 139   3               {
 140   4                     motor_rev();       //电机反转
 141   4                         if(K4==0)
 142   4                 {beep();break;}    //退出此循环程序
 143   4                       }
 144   3             }
 145   2                else  
 146   2                      P1 = 0xf0;
 147   2          }
 148   1       }
 149          
 150          /********************************************************/                 


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