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

📄 pwmled.lst

📁 51单片机 输出pwm 控制led 亮度
💻 LST
字号:
C51 COMPILER V8.02   PWMLED                                                                09/18/2007 17:06:24 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE PWMLED
OBJECT MODULE PLACED IN PWMLED.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PWMLED.c BROWSE DEBUG OBJECTEXTEND

line level    source

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

  56   1      }
  57          
  58          /*********************************************************/
  59          // 定时器0中断服务程序.
  60          /*********************************************************/
  61          void timer0() interrupt 1 
  62          {  
  63   1          TR1=0 ;
  64   1          TH0=0xfc ;
  65   1          TL0=0x66 ;
  66   1          TH1=PWM ;
  67   1          TR1=1 ;
  68   1          P0=0x00 ;      //启动输出
  69   1      }
  70          
  71          /*********************************************************/
  72          // 定时器1中断服务程序
  73          /*********************************************************/
  74          void timer1() interrupt 3 
  75          { 
  76   1          TR1=0 ;
  77   1          P0=0xff ;     //结束输出
  78   1      }
  79          
  80          /*********************************************************/
  81          //蜂鸣器子程序
  82          /*********************************************************/
  83          
  84          void Beep()     
  85            {
  86   1            unsigned char i  ;
  87   1            for (i=0  ;i<100  ;i++)
  88   1              {
  89   2                delay(100)  ;
  90   2                BEEP=!BEEP  ;                //Beep取反
  91   2              } 
  92   1           BEEP=1  ;                            //关闭蜂鸣器
  93   1           delayms(100);
  94   1        } 
  95          
  96          /*********************************************************/
  97          // 延时子程序
  98          /*********************************************************/  
  99          void delay(unsigned char t)
 100           { 
 101   1          while(t--)   ;
 102   1       }
 103          
 104          /*********************************************************/
 105          // 延时子程序
 106          /*********************************************************/
 107          void delayms(unsigned char ms) 
 108          
 109          {
 110   1          unsigned char i ;
 111   1          while(ms--)
 112   1           {
 113   2              for(i = 0 ; i < 120 ; i++) ;
 114   2           }
 115   1      }
 116          
 117          /*********************************************************/
C51 COMPILER V8.02   PWMLED                                                                09/18/2007 17:06:24 PAGE 3   



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