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

📄 s_ motor-key.lst

📁 按键控制步进电机正反转.rar
💻 LST
字号:
C51 COMPILER V6.10  S__MOTOR_KEY                                                           08/11/2007 13:42:33 PAGE 1   


C51 COMPILER V6.10, 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

stmt level    source

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

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

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


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