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

📄 pwmnew.lst

📁 利用52单片机通过8254定时器实现控制电机的PWM调速程序
💻 LST
字号:
C51 COMPILER V7.50   PWMNEW                                                                07/27/2008 08:28:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PWMNEW
OBJECT MODULE PLACED IN PWMnew.OBJ
COMPILER INVOKED BY: C:\Program Files\Important software\Keil\C51\BIN\C51.EXE PWMnew.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <absacc.h>
   3          
   4          #define uint unsigned int
   5          #define uchar unsigned char
   6          #define CT0 XBYTE[0x0000]//8254计数器地址
   7          #define CT1 XBYTE[0x1000]
   8          #define CT2 XBYTE[0x2000]
   9          #define CTW XBYTE[0x3000]
  10          
  11          sbit WDI=P2^7;
  12          sbit stop=P3^3;//S1
  13          sbit zhengzhuan=P2^3;//S2
  14          sbit fanzhuan=P2^2;//S3
  15          sbit speedup=P2^1;//S4
  16          sbit speeddown=P2^0;//S5
  17          sbit en=P1^0; 
  18          sbit zheng=P1^1;
  19          sbit fan=P1^2;
  20          
  21          
  22          uint speed=50;
  23          uint v=5;
  24          uint b;
  25          uchar count = 0;
  26          uint mark=0xf0;
  27          
  28          
  29          void PWM8254()
  30          {
  31   1      WDI=!WDI;
  32   1      CTW=0x16;//计数器0,只写低字节,方式3
  33   1      CT0=100;//周期
  34   1      CTW=0x92;//计数器2,只写低字节,方式1
  35   1      CT2=speed; //可调整占空比,speed越大,速度越慢
  36   1      }
  37          
  38          void Up()
  39          {
  40   1          speed=speed-v;
  41   1              if(speed<=5) speed=5;
  42   1              CTW=0x92;
  43   1          CT2=speed;
  44   1      }
  45          
  46          void Down()
  47          {
  48   1          speed=speed+v;
  49   1              if(speed>=95) speed=95;
  50   1              CTW=0x92;
  51   1          CT2=speed; 
  52   1      }
  53          
  54          void Stop()
  55          {
C51 COMPILER V7.50   PWMNEW                                                                07/27/2008 08:28:47 PAGE 2   

  56   1         en=1;
  57   1      }
  58          
  59          void delay()
  60          {
  61   1           TR2=1;
  62   1               do{ }while(count<=3);
  63   1           TR2=0;
  64   1               count = 0;
  65   1      }
  66          
  67          void main()
  68          {
  69   1      PWM8254();
  70   1      WDI=!WDI;
  71   1      
  72   1      RCAP2H=0x10;
  73   1      RCAP2L=0x00;
  74   1      TR2=0;
  75   1      ET2=1;
  76   1      EA=1;
  77   1      
  78   1      while(1)
  79   1        {
  80   2        WDI=!WDI;
  81   2        if(!zhengzhuan)
  82   2          {
  83   3              for(b=0;b<1000;b++);
  84   3          while(!zhengzhuan);
  85   3          for(b=0;b<1000;b++);
  86   3              if(mark==0x5a)
  87   3                {
  88   4                Stop();
  89   4                delay();
  90   4                }
  91   3              en=0;
  92   3              zheng=1;
  93   3              fan=0;
  94   3              mark=0xa5;
  95   3              }
  96   2        if(!fanzhuan)
  97   2          {
  98   3              for(b=0;b<1000;b++);
  99   3          while(!fanzhuan);
 100   3          for(b=0;b<1000;b++);
 101   3              if(mark==0xa5)
 102   3                {
 103   4                Stop();
 104   4                delay();
 105   4                }
 106   3          en=0;
 107   3              fan=1;
 108   3              zheng=0;
 109   3              mark=0x5a;
 110   3              }
 111   2        if(!stop)
 112   2          {
 113   3              for(b=0;b<1000;b++);
 114   3          while(!stop);
 115   3          for(b=0;b<1000;b++);
 116   3              en = 1;
 117   3              mark=0xf0;
C51 COMPILER V7.50   PWMNEW                                                                07/27/2008 08:28:47 PAGE 3   

 118   3              }
 119   2        if(!speeddown)
 120   2          {
 121   3              for(b=0;b<1000;b++);
 122   3          while(!speeddown);
 123   3          for(b=0;b<1000;b++);
 124   3              Down();
 125   3              }
 126   2        if(!speedup)
 127   2          {
 128   3              for(b=0;b<1000;b++);
 129   3          while(!speedup);
 130   3          for(b=0;b<1000;b++);
 131   3              Up();
 132   3              }
 133   2        }
 134   1      }
 135          timer2() interrupt 5
 136          {
 137   1      static uchar t=0;
 138   1      TF2=0;
 139   1      t++;
 140   1      if(t>=15)  
 141   1        {
 142   2        t=0;
 143   2        count++;
 144   2        }
 145   1      WDI=!WDI;
 146   1      }
 147          


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