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

📄 ds18b20.lst

📁 数据采集系统的好参考资料,高精度的传感器采集系统
💻 LST
字号:
C51 COMPILER V7.50   DS18B20                                                               09/13/2006 09:30:08 PAGE 1   


C51 COMPILER V7.50, 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          //                test the temputure with 18b20
   3          //                copyright by wangmeng 2006.4.3
   4          //==========================================================
   5          #include"reg51.h" 
   6          sbit DQ =P2^3;                // 定义DQ引脚为P1.7
   7          //============================================================
   8          //delay time is (1+2+2*t)*1.08
   9          //=============================================================
  10          void delay(unsigned char t) 
  11          {
  12   1              while(--t);
  13   1      }
  14          //=============================================================
  15          //reset 18b20
  16          //=============================================================
  17          unsigned char reset(void) 
  18          {
  19   1              unsigned char presence;
  20   1              DQ = 0;                         
  21   1              delay(240);             //holding 483us(400~960)
  22   1              DQ = 1;                         
  23   1              delay(15);                      //holding 33us(15~60)
  24   1              presence = DQ;          
  25   1              delay(240);             //wait for 18b20 203
  26   1              return(presence);       // return the sign,0 is presence, 1 is no
  27   1      }
  28          //==============================================================
  29          //write  one bit to 18b20
  30          //==============================================================
  31          void write_bit(char bitval) 
  32          {
  33   1              DQ = 0;
  34   1              delay(1);
  35   1              if(bitval) DQ =1;               //if write 1,DQ return 1 
  36   1              else DQ = 0;
  37   1              delay(28);                              //holding 63us(>60us)
  38   1              DQ = 1;         
  39   1      }       
  40          //==============================================================
  41          //write one byte to 18b20
  42          //==============================================================
  43          void write_byte(char val) 
  44          {
  45   1              unsigned char i;
  46   1              unsigned char temp;
  47   1              for (i=0; i<8; i++) 
  48   1              {                                               // 写入字节, 每次写入一位 
  49   2              temp = val>>i;          
  50   2              temp &= 0x01;           
  51   2              write_bit(temp); 
  52   2          }
  53   1      }
  54          //==================================================
  55          //read one bit from the 18b20
C51 COMPILER V7.50   DS18B20                                                               09/13/2006 09:30:08 PAGE 2   

  56          //==================================================
  57          unsigned char read_bit(void) 
  58          {
  59   1              unsigned char i;
  60   1          DQ = 0;
  61   1              delay(1);
  62   1              DQ = 1;                                                 // then return high
  63   1              
  64   1              delay(2);                                               //delay 15us
  65   1              i=DQ;
  66   1              delay(25);
  67   1              DQ = 1;
  68   1              return(i);                      
  69   1      }
  70          //========================================================
  71          //read one byte from 18b20
  72          //========================================================
  73          unsigned char read_byte(void) 
  74          {
  75   1              unsigned char i;
  76   1              unsigned char value = 0;
  77   1              for (i=0;i<8;i++) 
  78   1              {                               // 读取字节,每次读取一个字节
  79   2              if(read_bit()) value|=0x01<<i;  // 然后将其左移
  80   2              delay(3);                                       
  81   2          }
  82   1              return(value);
  83   1      }
  84          //========================================
  85          //get the temperature
  86          //========================================
  87          char Read_Temperature(void) 
  88          {
  89   1              unsigned char get[10];
  90   1              unsigned char temp_lsb,temp_msb;
  91   1              int k;
  92   1              reset();
  93   1              write_byte(0xCC);                                       // 跳过 ROM
  94   1              write_byte(0x44);                                       // 启动温度转换
  95   1              
  96   1              delay(50);
  97   1              
  98   1              reset();
  99   1              write_byte(0xCC);                                       // 跳过 ROM
 100   1              write_byte(0xBE);                                       // 读暂存器
 101   1              
 102   1              for (k=0;k<9;k++)
 103   1              {
 104   2              get[k]=read_byte();
 105   2              }
 106   1              
 107   1              temp_msb = get[1];      // Sign byte + lsbit
 108   1              temp_lsb = get[0];      // Temp data plus lsb
 109   1              k=temp_msb;
 110   1              k&=0x07;                        //match the sign bit
 111   1              k=k<<8|temp_lsb;
 112   1              k=k/16;
 113   1              return(k);
 114   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.50   DS18B20                                                               09/13/2006 09:30:08 PAGE 3   

   CODE SIZE        =    220    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   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 + -