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

📄 ds18b20温度转换子程序.lst

📁 DS18B20芯片的温度转换子程序精度为0.5
💻 LST
字号:
C51 COMPILER V8.08   DS18B20蝊度转换子程序                                                 03/19/2008 22:48:33 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DS18B20蝊度转换子程序
OBJECT MODULE PLACED IN DS18B20温度转换子程序.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20温度转换子程序.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #include<stdio.h>
   4          #define T_CONVER    0x44
   5          #define T_CONFIG    0x5f
   6          #define T_READ      0xbe
   7          #define T_WRITE     0x4e
   8          #define T_ROM_JMP   0xcc
   9          #define T_COPY_E2   0x48
  10          #define T_RECALL_E2 0xb8
  11          #define T_cont   0.0625
  12          #define  uint   unsigned int
  13          #define  uchar  unsigned char
  14          sbit      BZ    = P2^4 ;
  15          sbit      DQ    = P1^0;
  16          sbit     a_0    =ACC^0;
  17          bit   T_sign;
  18          bit   flag=1;
  19          float temp = 0;
  20          uchar  t_bai,t_shi,t_ge,t_point1,t_point2;
  21          
  22          void  delay(uint delay_time)
  23          {
  24   1      while(delay_time--);
  25   1      }
  26          
  27          //DS18B20子程序
  28          void DS18B20_init()
  29          {
  30   1      uchar  i=1;
  31   1      while(flag==0)
  32   1      {
  33   2      DQ = 1;
  34   2      delay(8);
  35   2      DQ = 0;
  36   2      delay(52);
  37   2      DQ = 1;
  38   2      delay(2);
  39   2      while(1)
  40   2      {
  41   3      i = DQ;
  42   3      if(i==0)
  43   3      {
  44   4      flag=1;
  45   4      delay(10);
  46   4      break;
  47   4      }
  48   3      }
  49   2      }
  50   1      flag=0;
  51   1      }
  52          
  53          void DS18B20_send(uchar out_data)
  54          {
  55   1      uchar  i=0;
C51 COMPILER V8.08   DS18B20蝊度转换子程序                                                 03/19/2008 22:48:33 PAGE 2   

  56   1      for(i=8;i>0;i--)
  57   1      {
  58   2      DQ = 0;
  59   2      ACC=out_data&0x01;
  60   2      DQ = a_0;
  61   2      delay(5);
  62   2      out_data>>=1;
  63   2      }
  64   1      }
  65          
  66          uchar DS18B20_read(void)
  67          {
  68   1      uchar i,in_data;
  69   1      in_data=0;
  70   1      for(i=8;i>0;i--)
  71   1      {
  72   2      DQ = 0;
  73   2      in_data>>=1;
  74   2      DQ = 1;
  75   2      if(DQ)  in_data|=0x80;
  76   2      delay(4);
  77   2      }
  78   1      return(in_data);
  79   1      }
  80          
  81          void ReadTemperature()
  82          {
  83   1      uint   yu;
  84   1      uchar  T_L=0;
  85   1      uchar  T_H=0;
  86   1      uchar  k;
  87   1      DS18B20_init();
  88   1      DS18B20_send(T_ROM_JMP);
  89   1      DS18B20_send(T_CONVER);
  90   1      DS18B20_init();
  91   1      DS18B20_send(T_ROM_JMP);
  92   1      DS18B20_send(T_READ);
  93   1      T_L=DS18B20_read();
  94   1      T_H=DS18B20_read();
  95   1      k=T_H&0x08;
  96   1      if(k==0x08) T_sign=1;
  97   1      else       T_sign=0;
  98   1      T_H=T_H&0x07;
  99   1      temp=(T_H*256+T_L)*T_cont;
 100   1      temp =temp *100;
 101   1      t_bai=(uint)temp/10000;
 102   1      yu   =(uint)temp%10000;
 103   1      t_shi=yu/1000;
 104   1      yu   =(uint)yu%1000;
 105   1      t_ge =yu/100;
 106   1      yu   =(uint)yu%100;
 107   1      t_point1=yu/10;
 108   1      t_point2=(uint)yu%10;
 109   1      }
 110          
 111          void main (void)
 112          {
 113   1      BZ=0;                    //关蜂鸣器
 114   1      while(1)
 115   1      {
 116   2      ReadTemperature();
 117   2      }
C51 COMPILER V8.08   DS18B20蝊度转换子程序                                                 03/19/2008 22:48:33 PAGE 3   

 118   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    344    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -