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

📄 keypwm.lst

📁 温度控制PWM
💻 LST
字号:
C51 COMPILER V6.23a  KEYPWM                                                                12/11/2007 13:18:32 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE KEYPWM
OBJECT MODULE PLACED IN .\obj\keypwm.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE driver\keypwm.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\keypwm.
                    -lst) OBJECT(.\obj\keypwm.obj) 

stmt level    source

   1          /**********************************************************
   2          *Header:
   3          *File Name:
   4          *Author: 陈培炜,杨帆
   5          *Data;2007
   6          *Function:
   7          *********************************************************/
   8          #include <REG52.h>
   9          #include "DS18B20.h"
  10          #include "Lcd.h"
  11          
  12          
  13          sbit pwmout = P1^0;
  14          sbit led1 = P1^1;
  15          sbit led2 = P1^2;
  16          sbit led3 = P1^3;
  17          sbit led4 = P1^4;
  18          sbit led5 = P1^5;
  19          sbit led6 = P1^6;
  20          sbit led7 = P1^7;
  21          unsigned char code alltime = 10000;
  22          unsigned int tempreture = 0;  //存放温度数值
  23          unsigned int High = 5000;        //存放高电平延时时间
  24          unsigned int Low = 5000;        //存放低电平延时时间
  25          
  26          extern unsigned char ut;   //外部设置的上限温度
  27          extern unsigned char dt;   //外部设置的下限温度
  28          
  29          /**********************************************************
  30          *Header:
  31          *File Name:
  32          *Author: 陈培炜,杨帆
  33          *Data;2007
  34          *Function:         用延时做PWM
  35          *********************************************************/
  36          
  37          void DelayPwm(unsigned int t)
  38          {
  39   1              unsigned int a;
  40   1              for(a=t; a!=0; a--)
  41   1              {
  42   2                      ;
  43   2              }
  44   1      }
  45          
  46          /**********************************************************
  47          *Header:
  48          *File Name:
  49          *Author: 陈培炜,杨帆
  50          *Data;2007         
  51          *Function:       PWM高底电平输出
  52          *********************************************************/
  53          
  54          void Pwm(void)
C51 COMPILER V6.23a  KEYPWM                                                                12/11/2007 13:18:32 PAGE 2   

  55          { 
  56   1         pwmout = 1;
  57   1         DelayPwm(High);
  58   1         pwmout = 0;
  59   1         DelayPwm(Low); 
  60   1      
  61   1      }
  62          
  63          /**********************************************************
  64          *Header:
  65          *File Name:
  66          *Author: 陈培炜,杨帆
  67          *Data;2007
  68          *Function:        定时器初始化
  69          *********************************************************/
  70          
  71          unsigned char TimerNum = 0x00;
  72          void T0InterruptInitial(void)
  73          {
  74   1                
  75   1              TMOD = (TMOD & 0xf0) | 0x01;            // 方式1,手动赋值赋值,定时长度65536 //  
  76   1              TH0 = TimerNum; // 定时0.001ms          
  77   1              TL0 = TimerNum;
  78   1      
  79   1      }       
  80          
  81          /*************************************************
  82          /*Header:DS18B20.h
  83          /*File Name:main.c 
  84          /*Author: 陈培炜,杨帆
  85          /*Data;2007
  86          /*Function:        定时器中断程序
  87          /************************************************/
  88          void T0interrupt(void) interrupt 1
  89          {
  90   1              TH0 = TimerNum; // 定时0.001ms          
  91   1              TL0 = TimerNum;
  92   1              tempreture = read0();      //在定时中断一到就读一次温度
  93   1      
  94   1              if( tempreture>=30 && tempreture<=50 )    //如果读到的温度在30-50之间则计算高底电平延时时间
  95   1              {
  96   2                      High = 25000-500*tempreture;            //占空比(50-t)/20
  97   2              Low = alltime - High;
  98   2              }
  99   1              else
 100   1              {
 101   2                      High = 5000;
 102   2                      Low = 5000;
 103   2              }
 104   1      
 105   1              if(tempreture<=dt)     //判断温度是否小于设定温度的下限值,如果小于,则LED亮
 106   1              {
 107   2                  led1 = 0;
 108   2                      led2 = 0;
 109   2                      led3 = 0;
 110   2                  led4 = 0;
 111   2                      led5 = 0;
 112   2                      led6 = 0;
 113   2                      led7 = 0;
 114   2              }
 115   1              if(tempreture>=ut)         //判断温度是否大于设定温度的上限值,如果大于,则LED灭
 116   1              {
C51 COMPILER V6.23a  KEYPWM                                                                12/11/2007 13:18:32 PAGE 3   

 117   2                  led1 = 1;
 118   2                      led2 = 1;
 119   2                      led3 = 1;
 120   2                  led4 = 1;
 121   2                      led5 = 1;
 122   2                      led6 = 1;
 123   2                      led7 = 1;
 124   2              } 
 125   1              disp(tempreture,High); //显示温度值和占空比
 126   1      }
 127          
 128          


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