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

📄 ds18b20.lst

📁 usblab usb程序开发实验 一个实例
💻 LST
字号:
C51 COMPILER V8.01   DS18B20                                                               08/05/2006 11:05:56 PAGE 1   


C51 COMPILER V8.01, 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          /*
   2             //************************************************************************* //
   3             //                  
   4             //
   5             //           COPYRIGHT (c)   2006 BY FOSHAN LX.
   6             //                     --  ALL RIGHTS RESERVED  --
   7             //
   8             // File Name:        ds18b20.C
   9             // Author:           guobin
  10             // Created:          2006/04/20
  11             // Modified:
  12             // Revision:         2.0
  13             //
  14             //*************************************************************************
  15          */
  16          
  17          #include "hardware.h"
  18          
  19          UCHAR   ROM64Bit[8];
  20          UCHAR   RAM9Byte[9];
  21          
  22          RealTM  RealTimeTM;
  23          
  24          bit DS18B20_Initial(void)
  25          {
  26   1              UINT    i;
  27   1      
  28   1              DS18B20_DQ=0;
  29   1              i=200;
  30   1              while(i--);                             //delay minimum= 480us
  31   1              DS18B20_DQ=1;
  32   1              i=15;
  33   1              while(i--);                             //delay 15~60us=40us
  34   1              i=80;
  35   1              while(i--)                              //delay 60~240us
  36   1                      if(!DS18B20_DQ)
  37   1                              break;
  38   1              
  39   1              if(i==0xFFFF)
  40   1                      return  0;
  41   1              i=100;                                  //delay 240us
  42   1              while(i--);
  43   1              return  1;
  44   1      }
  45          
  46          void DS18B20_Write(UCHAR Dat)
  47          {
  48   1              UCHAR   i=0;
  49   1          UCHAR       j;
  50   1      
  51   1              for(j=1;j<=8;j++)
  52   1                      {
  53   2                      if((Dat&0x01)==0x01)
  54   2                              {
  55   3                              DS18B20_DQ=0;
C51 COMPILER V8.01   DS18B20                                                               08/05/2006 11:05:56 PAGE 2   

  56   3                              for(i=0;i<5;i++);                       //delay min=1us  4us
  57   3                              DS18B20_DQ=1;
  58   3                              i=20;
  59   3                              while(i--);                                     //delay max=60us
  60   3                              }
  61   2                      else
  62   2                              {
  63   3                              DS18B20_DQ=0;
  64   3                              i=40;                                           //delay min=60us max=120us       84us
  65   3                              while(i--);
  66   3                              DS18B20_DQ=1;
  67   3                              for(i=0;i<5;i++);                       //delay min=1us
  68   3                              }
  69   2                      Dat>>=1;
  70   2                      }    
  71   1      }
  72          
  73          UCHAR   DS18B20_Read(void)
  74          {
  75   1              UCHAR   i,j;
  76   1              UCHAR   Dat;
  77   1      
  78   1              Dat=0;
  79   1              for(i=0;i<8;i++)
  80   1                      {
  81   2                      DS18B20_DQ=0;
  82   2                      for(j=0;j<2;j++);                       //delay min=1us  2us
  83   2                      DS18B20_DQ=1;
  84   2                      for(j=0;j<5;j++);                       //delay 2us~10us
  85   2                      if(DS18B20_DQ)
  86   2                              Dat+=1<<i;
  87   2                      j=30;
  88   2                      while(j--);                                     //delay min=45us
  89   2                      }
  90   1              return  Dat;
  91   1      }
  92          
  93          UCHAR   DS18B20_Start(void)
  94          {
  95   1              UCHAR   i;
  96   1      
  97   1              if(!DS18B20_Initial())
  98   1                      return  0;
  99   1              
 100   1              DS18B20_Write(0x33);    //read rom code 64bit
 101   1      
 102   1              for(i=0;i<8;i++)
 103   1                      ROM64Bit[i]=DS18B20_Read();
 104   1      
 105   1              DS18B20_Write(0x44);    //start convert temprature
 106   1      
 107   1              
 108   1              return  1;
 109   1      }
 110          
 111          void    DS18B20_WaitDQ(void)
 112          {
 113   1              while(!DS18B20_DQ);
 114   1      }
 115          
 116          void    DS18B20_ReadTM(void)
 117          {
C51 COMPILER V8.01   DS18B20                                                               08/05/2006 11:05:56 PAGE 3   

 118   1              UCHAR   i;
 119   1              UINT    j;
 120   1      
 121   1              DS18B20_Initial();
 122   1              
 123   1              DS18B20_Write(0x33);    //read rom code 64bit
 124   1      
 125   1              for(i=0;i<8;i++)
 126   1                      ROM64Bit[i]=DS18B20_Read();
 127   1      
 128   1              DS18B20_Write(0xBE);    //Read temprature
 129   1      
 130   1              for(i=0;i<9;i++)
 131   1                      RAM9Byte[i]=DS18B20_Read();
 132   1      
 133   1              ((UCHAR *)&j)[0]=RAM9Byte[1];
 134   1              ((UCHAR *)&j)[1]=RAM9Byte[0];
 135   1      
 136   1              if(RAM9Byte[1]>0x80)
 137   1                      {
 138   2                      RealTimeTM.Sign=1;
 139   2                      RealTimeTM.ZhengShu=(UCHAR)(~j>>4);
 140   2                      RealTimeTM.XiaoShu=(16-(j&0x000F))*625;
 141   2                      if(RealTimeTM.XiaoShu==0)
 142   2                              RealTimeTM.ZhengShu++;
 143   2                      }
 144   1              else
 145   1                      {
 146   2                      RealTimeTM.Sign=0;
 147   2                      RealTimeTM.ZhengShu=(UCHAR)(j>>4);
 148   2                      RealTimeTM.XiaoShu=(j&0x000F)*625;
 149   2                      }
 150   1      }


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