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

📄 motor.lst

📁 可用于控制步进电机正反转的51单片机汇编程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 1   


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

line level    source

   1          
   2          /*****************************************************************/ 
   3          /*                                                                                                        
             -                       
   4          /*              热释红外探测人体,USB摄像头进行观察                                                       
             -                                                                                                                  
   5          /*                                                                                   
   6          /*                                                                                                        
             -              
   7          /*               
   8          /*                                                                                                        
             -                                                                                                                        
             -                    
   9          /******************************************************************/
  10              
  11          #include <reg52.h>       
  12          #include <string.h>    
  13          
  14          #define uchar unsigned char
  15          #define uint  unsigned int
  16          
  17          
  18          
  19          uchar code FFW1[4]={0x03,0x09,0x0c,0x06};//正转数组
  20          uchar code REV1[4]={0x06,0x0c,0x09,0x03};//反转数组
  21          uchar code FFW2[4]={0x30,0x90,0xc0,0x60};//正转数组
  22          uchar code REV2[4]={0x60,0xc0,0x90,0x30};//反转数组
  23          
  24          
  25          
  26          
  27          bit    StartFlag1=0; 
  28          bit    StartFlag2=0;
  29          bit    SingalFlag=0;
  30          sbit   sensor_signal=P3^3;      
  31          sbit  photoelectric_switch=P3^2;
  32          uchar rate=0xff;
  33          uchar motorstep1=0;
  34          uchar motorstep2=0;
  35          uchar con_step;
  36          uchar count1;
  37          uchar count2;
  38          uchar j=0;
  39          bit con_direction;
  40          uchar m=0,n=0;
  41             
  42          /********************************************************/
  43          /*                                                  
  44          /* 延时 1ms
  45          /* 11.0592MHz时钟,                                    
  46          /*                                                      
  47          /********************************************************/
  48          void delay()
  49           {                           
  50   1         uchar k;
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 2   

  51   1         uint s;
  52   1         k = rate;
  53   1         do
  54   1          {
  55   2             for(s = 0 ; s <100 ; s++) ;  
  56   2          }while(--k);
  57   1       }
  58          
  59           
  60          
  61          /********************************************************/
  62          /*
  63          /*步进电机正转
  64          /*
  65          /********************************************************
  66          void  motor2_ffw()
  67          { 
  68             uchar i;
  69           
  70              for (i=0; i<4; i++)      //一个周期转30度
  71              {  motorstep2++;
  72                           if(motorstep2==1)EX1=1;
  73                           
  74                 P1 = FFW2[i];//取数据
  75                 delay();                 //调节转速
  76              }
  77          }
  78          *******************************************************/
  79          /*
  80          /*步进电机反转
  81          /*
  82          /**********************************************
  83          void  motor2_rev()
  84          { 
  85             uchar i;
  86           
  87              for (i=0; i<4; i++)      //一个周期转30度
  88              {  motorstep2++;
  89                     if(motorstep2==1)EX1=1;
  90                 P1 = REV2[i]; //取数据
  91                 delay();                 //调节转速
  92              }
  93          }
  94          
  95          **********/
  96          /********************************************************
  97          *                                                       
  98          *  主程序                                               
  99          *                                                      
 100          *********************************************************/
 101             void main(void)
 102          {   
 103   1               uint a,b,c;
 104   1         
 105   1         
 106   1        
 107   1         /*******************定时器0初始化************************/
 108   1          count1=0;
 109   1              TMOD=0x61;
 110   1              TH0=-50000/256;
 111   1          TL0=-50000%256;                                                      
 112   1              PT0=0;
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 3   

 113   1              ET0=1;
 114   1              TR0=1;
 115   1          EA=1;
 116   1      
 117   1              /*****************定时器1初始化**************************/
 118   1              TL1=0xff;
 119   1              TH1=0xff;
 120   1               ET1=1;
 121   1               TR1=1;                          
 122   1               PT1=1;
 123   1              /******************外部中断0初始化——光电对管1**********************/
 124   1                  EX0=1;                              
 125   1                  PX0=0;
 126   1              IT0=0;                          
 127   1                      EA=1;
 128   1              /******************外部中断1初始化——光电对管2********************/
 129   1                 
 130   1                      EX1=1;
 131   1                  PX1=0;
 132   1              IT1=0;                          
 133   1                      EA=1;                   
 134   1                 
 135   1              /******************************************************/
 136   1      
 137   1      
 138   1      
 139   1      
 140   1      
 141   1         while(1)
 142   1      
 143   1      
 144   1      
 145   1        {             
 146   2        
 147   2                       
 148   2                                                                                                      
 149   2                      if(SingalFlag==1)
 150   2                 {           
 151   3                                         
 152   3                                        EA=0;         
 153   3                                         con_direction=StartFlag1;
 154   3                                         con_step=motorstep1;
 155   3                                              
 156   3                                              //MOTOR2转至信号输入方向                                 
 157   3                                       if(con_direction==1) { 
 158   4                                                                      while(motorstep2<=con_step)                               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -