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

📄 t.lst

📁 本人收集的一些C语言程序
💻 LST
字号:
C51 COMPILER V7.50   T                                                                     04/03/2006 16:01:18 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE T
OBJECT MODULE PLACED IN t.OBJ
COMPILER INVOKED BY: e:\xp\Keil\C51\BIN\C51.EXE t.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************/
   2          /*     程序名:PWM直流电机调速                                                      */
   3          /*                                                                                  */
   4          /*     晶振:12.0 M                                        CPU型号:AT89S52         */
   5          /*                                                                                  */                    
             -                         
   6          /*                                                                                  */
   7          /*     功能描述: 将J12的2,3脚和J8的7,8脚(均自上而下数)分别相连!                   */
   8          /*                     直流电机的pwm波控制,可以直接的调速从0到20级的调速           */ 
   9          /*                                                                                  */
  10          /*     http://www.mculover.net                                                      */
  11          /*     http://www.mculover.net/bbs                                                  */
  12          /*                                                                                                                                                      */
  13          /*                                                                                  */
  14          /*                                                湘灵电子工作室 版权所有           */                    
             -             
  15          /*                                                         2006-03-20               */
  16          /************************************************************************************/ 
  17          #include<reg51.h>
  18          
  19          #define  TH0_TL0  (65536-1000)//设定中断的间隔时长
  20          
  21          unsigned char count0 = 0;
  22          unsigned char count1 = 0;
  23          
  24          bit  Flag = 1;//电机正反转标志位,1正转,0反转
  25          
  26          sbit Key_add=P1 ^ 4;  //电机减速
  27          sbit Key_dec=P1 ^ 5;  //电机加速
  28          sbit Key_turn=P1 ^ 6; //电机换向
  29          
  30          sbit PWM1=P3^6;//PWM 通道 1
  31          sbit PWM2=P3^7;//PWM 通道 2
  32          
  33          unsigned char Time_delay;
  34          
  35          //函数声明
  36          void Delay(unsigned char x);
  37          void Motor_speed_high(void);
  38          void Motor_speed_low(void);
  39          void Motor_turn(void);
  40          void Timer0_init(void);
  41          
  42          /******************************************************************************/
  43          void Delay(unsigned char x)//延时处理
  44          {
  45   1              Time_delay = x;
  46   1      
  47   1              while(Time_delay != 0);
  48   1      }
  49          
  50          /******************************************************************************/
  51          void Timer0_int(void) interrupt 1 using 1//定时中断处理
  52          {
  53   1              TR0 = 0;
C51 COMPILER V7.50   T                                                                     04/03/2006 16:01:18 PAGE 2   

  54   1          TL0 += (TH0_TL0 + 9) % 256;
  55   1          TH0 += (TH0_TL0 + 9) / 256 + (char)CY;
  56   1          TR0 = 1;
  57   1      
  58   1              if(Time_delay != 0)
  59   1              {
  60   2                      Time_delay--; //延时函数用
  61   2              }
  62   1      
  63   1              if(Flag == 1)//电机正转
  64   1              {
  65   2                      PWM1 = 0;       
  66   2      
  67   2                      if(++count1 < count0)
  68   2                      {
  69   3                              PWM2 = 1;
  70   3                      }
  71   2                      else 
  72   2                              PWM2 = 0;
  73   2      
  74   2                      if(count1 >= 100)
  75   2                      {
  76   3                              count1=0;
  77   3                      }
  78   2               }
  79   1              else      //电机反转
  80   1              {
  81   2                      PWM2 = 0;       
  82   2      
  83   2                      if(++count1 < count0)
  84   2                      {
  85   3                              PWM1 = 1;
  86   3                      }
  87   2                      else 
  88   2                              PWM1 = 0;
  89   2      
  90   2                      if(count1 >= 100)
  91   2                      {
  92   3                              count1=0;
  93   3                      }
  94   2               }//反转
  95   1      }
  96          
  97          /******************************************************************************/
  98          void Motor_speed_high(void)//按键处理加pwm占空比,电机加速
  99          {
 100   1              if(Key_add==0)
 101   1              {
 102   2                      Delay(10);
 103   2                      if(Key_add==0)
 104   2                      {
 105   3                              count0 += 5;
 106   3                      
 107   3                              if(count0 >= 100)
 108   3                              {
 109   4                                      count0 = 0;
 110   4                              }       
 111   3                      }
 112   2                      while(Key_add == 0);//等待键松开
 113   2              }
 114   1      }
 115          
C51 COMPILER V7.50   T                                                                     04/03/2006 16:01:18 PAGE 3   

 116          /******************************************************************************/
 117          void Motor_speed_low(void)//按键处理减pwm占空比,电机减速
 118          {
 119   1              if(Key_dec==0)
 120   1              {
 121   2                      Delay(10);
 122   2                      if(Key_dec==0)
 123   2                      {
 124   3                              count0 -= 5;
 125   3              
 126   3                              if(count0 <= 0)
 127   3                              {
 128   4                                      count0 = 100;
 129   4                              }       
 130   3                      }
 131   2                      while(Key_dec == 0);
 132   2              }       
 133   1      }
 134          
 135          /******************************************************************************/
 136          void Motor_turn(void)//电机正反向控制
 137          {
 138   1              if(Key_turn == 0)
 139   1              {
 140   2                      Delay(10);
 141   2                      if(Key_turn == 0)
 142   2                      {
 143   3                              Flag = ~Flag;
 144   3                      }
 145   2                      while(Key_turn == 0);
 146   2              }
 147   1      }
 148          
 149          /******************************************************************************/
 150          void Timer0_init(void)//定时器0初始化
 151          {
 152   1              TMOD=0x01;
 153   1              TH0=TH0_TL0 / 256;
 154   1              TL0=TH0_TL0 % 256;
 155   1              TR0=1;
 156   1              ET0=1;
 157   1              EA=1;
 158   1      }
 159          
 160          /******************************************************************************/
 161          void main(void)//主函数
 162          {
 163   1          Timer0_init();
 164   1                 
 165   1              while(1)
 166   1              {
 167   2              //      Flag = Motor_turn();
 168   2      
 169   2                      Motor_turn();
 170   2      
 171   2                      Motor_speed_high();
 172   2                      Motor_speed_low();
 173   2               }
 174   1      }
 175          
 176          

C51 COMPILER V7.50   T                                                                     04/03/2006 16:01:18 PAGE 4   


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