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

📄 51

📁 51单片机大量源码
💻
字号:
C51 COMPILER V8.02   PWMLED                                                                07/22/2009 22:47:56 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 =P3^2 ;                    //增加键
  14          sbit  K2 =P3^3 ;                    //减少键
  15          sbit  BEEP =P3^6 ;                //蜂鸣器
  16          unsigned char PWM=0x7f ;   //赋初值
  17          void Beep();
  18          void delayms(unsigned char ms);
  19          void delay(unsigned char t);
  20          
  21          /*********************************************************/
  22          void main()
  23          {  
  24   1      
  25   1           P0=0xff; 
  26   1          TMOD=0x21 ;
  27   1          TH0=0xfc ;             //1ms延时常数 12M
  28   1          TL0=0x18 ;            //频率调节
  29   1      
  30   1          TH1=PWM ;            //脉宽调节
  31   1          TL1=0 ;
  32   1      
  33   1           EA=1;
  34   1           ET0=1;
  35   1           ET1=1;
  36   1          
  37   1           TR0=1 ;
  38   1      
  39   1         while(1)
  40   1         {
  41   2           do{
  42   3                  if(PWM!=0xff)
  43   3                 {PWM++ ;delayms(10);}
  44   3                 else Beep() ; 
  45   3               }
  46   2           while(K1==0);
  47   2      
  48   2           do{
  49   3                 if(PWM!=0x02)
  50   3                {PWM-- ;delayms(10);}
  51   3                 else Beep() ; 
  52   3                }
  53   2           while(K2==0);
  54   2         }
  55   1      }
C51 COMPILER V8.02   PWMLED                                                                07/22/2009 22:47:56 PAGE 2   

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

C51 COMPILER V8.02   PWMLED                                                                07/22/2009 22:47:56 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 + -