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

📄 pwm.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V7.06   PWM                                                                   11/28/2008 09:29:06 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN PWM.OBJ
COMPILER INVOKED BY: d:\Keil2\C51\BIN\C51.EXE PWM.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          1、学习目的:利用定时器产生PWM,了解原理和使用方法
   3          2、硬件要求:LED灯 定时器
   4          3、试验现象:LED灯由亮到灭,由灭到亮逐步变化,也就是调光现象
   5          */
   6          
   7          #include <reg52.h>
   8          
   9          sbit LED = P1^2;
  10          unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms
  11          unsigned char PWM_ON ;//定义高电平时间
  12          void delay(unsigned int cnt)
  13          {
  14   1       while(--cnt);
  15   1      }
  16          
  17          main()
  18          {
  19   1      bit Flag;
  20   1      
  21   1      TMOD |=0x01;//定时器设置 0.1ms in 12M crystal
  22   1      TH0=(65536-100)/256; 
  23   1      TL0=(65536-100)%256;//定时0.1mS 
  24   1      IE= 0x82;  //打开中断
  25   1      TR0=1;
  26   1      
  27   1      CYCLE = 10;// 时间可以调整 这个是10调整 8位PWM就是256步
  28   1      while(!Flag)
  29   1        {
  30   2         delay(20000); //延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效果
  31   2         PWM_ON++;     //这个使用较长延时,以便能看清楚变化过程
  32   2         if(PWM_ON == CYCLE)
  33   2           {           //这个里可以添加其他程序 如到最亮时候控制设备
  34   3            Flag=1;
  35   3                }
  36   2        }
  37   1      
  38   1       while(Flag)     //亮度递减 同上,是个相反的过程
  39   1        {
  40   2         delay(20000);
  41   2         PWM_ON--;
  42   2         if(PWM_ON == 0)
  43   2           {
  44   3            Flag=0;
  45   3                }
  46   2        }
  47   1      }
  48          /********************************/
  49          /*      定时中断                */
  50          /********************************/
  51          void tim(void) interrupt 1 using 1
  52          {
  53   1      static unsigned char count; //
  54   1      TH0=(65536-100)/256; 
  55   1      TL0=(65536-100)%256;//定时0.1mS 
C51 COMPILER V7.06   PWM                                                                   11/28/2008 09:29:06 PAGE 2   

  56   1      
  57   1      if (count==PWM_ON)
  58   1          {
  59   2           LED = 1; //灯灭 
  60   2          }
  61   1        count++;
  62   1      if(count == CYCLE)
  63   1          {
  64   2          count=0;
  65   2              if(PWM_ON!=0) //如果左右时间是0 保持原来状态
  66   2                 LED = 0;//灯亮
  67   2      
  68   2          }
  69   1      
  70   1      }


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