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

📄 pwm控制led.lst

📁 PWM在51单片机中应用 通过P0口来显示
💻 LST
字号:
C51 COMPILER V7.07   PWM控制LED                                                            11/26/2007 20:00:38 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE PWM控制LED
OBJECT MODULE PLACED IN PWM控制LED.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PWM控制LED.c BROWSE DEBUG OBJECTEXTEND TABS(8)

stmt level    source

   1          // PWM 控制 LED 灯渐亮渐灭程序
   2          // 晶振为11.0592M
   3          // 利用定时器控制产生占空比可变的 PWM 波
   4          // 按K1,PWM值增加,则占空比减小,LED 灯渐暗。
   5          // 按K2,PWM值减小,则占空比增加,LED 灯渐亮。
   6          // 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
   7          
   8          /*********************************************************/
   9          #include"reg51.h"
  10          #include"intrins.h"
  11          #define uchar unsigned char
  12          #define uint  unsigned int
  13          sbit  K1=P3^2;                    //增加键
  14          sbit  K2=P3^3;                    //减少键
  15          sbit  BEEP=P1^4;                  //蜂鸣器
  16          uchar PWM=0x7f;                   //赋初值
  17          
  18          void Beep(void);
  19          void delayms(uchar ms);
  20          void delay(uchar t);
  21          
  22          /*********************************************************/
  23          void main(void)
  24          {  
  25   1              TMOD=0x21;
  26   1              TH0=0xfc;                               //1ms延时常数
  27   1              TL0=0x66;                               //频率调节
  28   1              TH1=PWM;                                //脉宽调节
  29   1              TL1=0;
  30   1              EA=1;
  31   1              ET0=1;
  32   1              ET1=1;   
  33   1              TR0=1 ;
  34   1              while(1)
  35   1                      {
  36   2                              do{
  37   3                                      if(PWM!=0xff){PWM++;delayms(10);}
  38   3                                      else Beep();
  39   3                                }while(K1==0);
  40   2                              do{
  41   3                                      if(PWM!=0x02){PWM--;delayms(10);}
  42   3                                      else Beep(); 
  43   3                                }while(K2==0);
  44   2                      }
  45   1      }
  46          
  47          /*********************************************************/
  48          // 定时器0中断服务程序.
  49          /*********************************************************/
  50          void timer0() interrupt 1 
  51          {  
  52   1              TR1=0;
  53   1              TH0=0xfc;
  54   1              TL0=0x66;
  55   1              TH1=PWM;
C51 COMPILER V7.07   PWM控制LED                                                            11/26/2007 20:00:38 PAGE 2   

  56   1              TR1=1;
  57   1              P0=0x00;                                //启动输出
  58   1      }
  59          
  60          /*********************************************************/
  61          // 定时器1中断服务程序
  62          /*********************************************************/
  63          void timer1() interrupt 3 
  64          { 
  65   1              TR1=0;
  66   1              P0=0xff;                                //结束输出
  67   1      }
  68          
  69          /*********************************************************/
  70          //蜂鸣器子程序
  71          /*********************************************************/
  72          void Beep(void)     
  73          {
  74   1              uchar i;
  75   1              for(i=0;i<100;i++)
  76   1                      {
  77   2                              delay(100);
  78   2                              BEEP=!BEEP;             //Beep取反
  79   2                      } 
  80   1              BEEP=1;                                 //关闭蜂鸣器
  81   1              delayms(100);
  82   1      } 
  83          
  84          /*********************************************************/
  85          // 延时子程序
  86          /*********************************************************/  
  87          void delay(uchar t)
  88          { 
  89   1              while(t--);
  90   1      }
  91          
  92          /*********************************************************/
  93          // 延时子程序
  94          /*********************************************************/
  95          void delayms(uchar ms) 
  96          {
  97   1              uchar i;
  98   1              while(ms--)
  99   1                      {
 100   2                              for(i=0;i<120;i++);
 101   2                      }
 102   1      }
 103          /********************************************************/


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