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

📄 pwm_t2.lst

📁 用定时器实现的PWM程序,可设置占空比.
💻 LST
字号:
C51 COMPILER V7.06   PWM_T2                                                                11/05/2008 23:44:42 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PWM_T2
OBJECT MODULE PLACED IN pwm_t2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm_t2.c BROWSE INCDIR(C:\EZST\EasyStudy51\ES51-II\Target\INC\) DEBUG OBJEC
                    -TEXTEND

stmt level    source

   1          
   2          /*
   3           File:  pwm_t2.c
   4           说明:  PWM波形输出,定时器实现
   5           Author:wolfe
   6           Data:  2008.10 
   7          */
   8          
   9          
  10          #include "at89x52.h"
  11          #include "ES51_II.h"
  12          #include "es51_ii_lib.h"
  13          
  14          //      输出到P1.0,直接观察LED1亮度粗略地判断.
  15          sbit PWM_OUT = P1^0;
  16          
  17          //      全局变量
  18          bit  bPWMFLAG;
  19          unsigned int Revlue;            
  20          unsigned int Positive;
  21          unsigned int Negative;
  22          
  23          //      timer2初始化程序
  24          void InitTimer2(unsigned int value)
  25          {
  26   1              RCAP2H = value>>8;
  27   1              RCAP2L = value; 
  28   1              T2MOD = 0x00;                           //      禁止定时时钟从P1.0输出.
  29   1                                                                      //      计数方式与P1.1无关,采用加计数方式.
  30   1              TH2     = RCAP2H;       
  31   1              TL2     = RCAP2L;
  32   1              T2CON = 0x00;                           //      0000,0000       计数,自动重装方式.
  33   1      }
  34          
  35          //      timer2中断程序
  36          void T2OverflowINT(void) interrupt 5 using 0
  37          {
  38   1              PWM_OUT = !PWM_OUT;
  39   1              TF2 = 0;                                        //清零中断标志  
  40   1              RCAP2H = Revlue>>8;                     //重写RCAP寄存器
  41   1              RCAP2L = Revlue;
  42   1              
  43   1              if(0 == bPWMFLAG)                       //设置下一次RCAP2H的值
  44   1                      Revlue = Positive;
  45   1              else
  46   1                      Revlue = Negative;      
  47   1              bPWMFLAG = !bPWMFLAG;
  48   1      }
  49          
  50          
  51          //      设置占空比(频率为1KHZ)
  52          //              设置占空比范围:5.0%-95.0%;精确到小数后一位,
  53          //              矩形波中占空比是指正脉冲与整个周期的比值.
  54          void SetDutyCycle(float duty)
C51 COMPILER V7.06   PWM_T2                                                                11/05/2008 23:44:42 PAGE 2   

  55          {
  56   1              bPWMFLAG = 0;
  57   1              PWM_OUT = 0;                            //      PWM输出引脚初始状态为0
  58   1              Positive = 0xffff - 10*duty;
  59   1              Negative = 0xffff - 10*(100-duty);
  60   1              InitTimer2(Negative);
  61   1      }
  62          
  63          //      启动PWM输出
  64          #define ENPWMOUT()      TR2=1   
  65          //      停止PWM输出
  66          #define DISPWMOUT()     TR2=0
  67          
  68          void main()
  69          {       
  70   1              EA = 1;                                         //      开总中断
  71   1              ET2 = 1;                                        //      允许T2溢出中断
  72   1                                                                      
  73   1                                                                      //      修改传递的参数,观察LED1灯的亮度.
  74   1              SetDutyCycle(53.4);                     //      设置占空比为53.4%
  75   1                                                              
  76   1              ENPWMOUT();                                     //      允许PWM输出
  77   1              while(1);
  78   1      }
  79          
  80          


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