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

📄 motor.lst

📁 由单片机8951来控制 c语言编写 具有实现正转反转 加速减速 采用PWM调制的方法
💻 LST
字号:
C51 COMPILER V8.08   MOTOR                                                                 03/22/2009 17:12:04 PAGE 1   


C51 COMPILER V8.08, 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           #include <reg51.h>
   2           #include <intrins.h>
   3           #include <absacc.h>
   4           #define uchar unsigned char 
   5            
   6            sbit  PWM=P1^0;
   7            sbit  DR=P1^1;
   8            sbit  big_pwm=P1^2;
   9            sbit  small_pwm=P1^3;
  10            sbit  turn_direction=P1^4;
  11            sbit   big   =P2^1;
  12            
  13            #define timer_data (256-100)
  14            #define PWM_T  100               //定义脉冲的宽度
  15            
  16            unsigned char PWM_t ;    //位时间脉冲宽度0~100
  17            unsigned char  PWM_count;     //输出周期计数
  18            unsigned char time_count;
  19            bit direction;
  20          /***************************************************/
  21           //函数声明
  22           /***************************************************/
  23             void Delay(uchar);
  24             void Mortor_speed_high();
  25             void Mortor_speed_low();
  26             void Mortor_turn();
  27           /***************************************************/
  28           //      定时器初始化选择方式二,延时0.1MS
  29           /***************************************************/
  30          
  31            void timer_init(void)
  32            {
  33   1              TMOD=0x22;
  34   1              PCON=0x00;       //选择方式2
  35   1              TF0=0;
  36   1              TH0=timer_data;  //定时0.1毫秒
  37   1              TL0=TH0;
  38   1              ET0=1;
  39   1              TR0=1;
  40   1              EA=1;
  41   1        }
  42          void init()
  43          {
  44   1              
  45   1      }
  46          void  Delay(uchar temp)
  47            {
  48   1              uchar i;
  49   1              for(i=0;i<temp;i++);
  50   1        }
  51             /***************************************************/
  52           //      设定脉冲宽度和方向
  53           /***************************************************/
  54            void setting_PWM()
  55            {
C51 COMPILER V8.08   MOTOR                                                                 03/22/2009 17:12:04 PAGE 2   

  56   1        
  57   1              if(PWM_count==0)
  58   1              {
  59   2                      PWM_t=20;
  60   2                      direction=1;
  61   2              }
  62   1        }
  63           
  64           /******************************************************************************/
  65          void Motor_speed_high(void)//按键处理加pwm占空比,电机加速
  66          {
  67   1              if(big_pwm==0)
  68   1              {
  69   2                      Delay(10);
  70   2                      if(big_pwm==0)
  71   2                      {
  72   3                              PWM_t += 5;
  73   3                      
  74   3                              if(PWM_t >= 100)
  75   3                              {
  76   4                                      PWM_t = 100;
  77   4                              }       
  78   3                      }
  79   2                      while(big_pwm == 0);//等待键松开
  80   2              }
  81   1      }
  82          
  83          /******************************************************************************/
  84          void Motor_speed_low(void)//按键处理减pwm占空比,电机减速
  85          {
  86   1              if(small_pwm==0)
  87   1              {
  88   2                      Delay(10);
  89   2                      if(small_pwm==0)
  90   2                      {
  91   3                              PWM_t -= 5;
  92   3              
  93   3                              if(PWM_t <= 0)
  94   3                              {
  95   4                                      PWM_t = 0;
  96   4                              }       
  97   3                      }
  98   2                      while(small_pwm == 0);
  99   2              }       
 100   1      }
 101          
 102          /******************************************************************************/
 103          void Motor_turn(void)//电机正反向控制
 104          {
 105   1              if(turn_direction== 0)
 106   1              {
 107   2                      Delay(10);
 108   2                      if(turn_direction== 0)
 109   2                      {
 110   3                              direction = ~direction;
 111   3                      }
 112   2                      while(turn_direction== 0);
 113   2              }
 114   1      }
 115           void main()
 116           {
 117   1              timer_init();
C51 COMPILER V8.08   MOTOR                                                                 03/22/2009 17:12:04 PAGE 3   

 118   1              while(1)
 119   1              {
 120   2               setting_PWM();
 121   2               Mortor_speed_low();
 122   2               Mortor_speed_high();
 123   2               Mortor_turn();
 124   2               }
 125   1       }
 126             /***************************************************/
 127           //      pwm波输出程序
 128           /***************************************************/
 129           void  Intimer0() interrupt 1
 130           {
 131   1              time_count++;
 132   1              DR=PWM_t;big=!big;
 133   1              if(time_count>=PWM_T)
 134   1              {
 135   2               time_count=0;
 136   2               PWM_count++;
 137   2               setting_PWM(); //每一个周期调用一次
 138   2              }
 139   1              if(time_count<PWM_t)
 140   1              PWM=1;
 141   1              else 
 142   1              PWM=0;
 143   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    182    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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