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

📄 ds18b20.lst

📁 压缩包中包括多个常用的汇编
💻 LST
字号:
C51 COMPILER V7.09   DS18B20                                                               10/09/2005 20:45:34 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN E:\C51PRJ\APPNEW\DS18B20.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\APPNEW\DS18B20.C DB SB OE

line level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*               Copyright (c) 2005, 老树工作室                             */
   4          /*                   All rights reserved.                                   */
   5          /*                                                                          */
   6          /*      http://www.saintone.net      Email:hxm0902@163.com                  */
   7          /*      QQ:112431149                 Tel:010-62966630                       */
   8          /*                                                                          */
   9          /****************************************************************************/
  10          /****************************************************************************/
  11          /* 文件名:ds18b20.c                                                        */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:ds18b20的驱动代码                                                */
  14          /* 作  者:spot                                                             */
  15          /* 函  数:                                                                 */
  16          /*         delay_18b20                                                      */
  17          /*         ow_reset                                                         */
  18          /*         read_bit                                                         */
  19          /*         write_bit                                                        */
  20          /*         read_byte                                                        */
  21          /*         write_byte                                                       */
  22          /*         get_temperature                                                  */
  23          /*                                                                          */
  24          /* 历史记录:                                                               */
  25          /*  spot          2005-07-15     Creat Inital version. (Version 1.0)        */
  26          /****************************************************************************/
  27          
  28          #include <reg52.h>
  29          #include <absacc.h>
  30          #include <intrins.h>
  31          #include "../includes/types.h"
  32          
  33          sbit DQ = P0^3;
  34          
  35          /* 函数声明 */
  36          void delay_18b20 (u_int us);     /* 延时子程序           */
  37          bit ow_reset(void);              /* 初始化DS18B20子程序  */
  38          bit read_bit(void);              /* 从DS18B20读出1位     */
  39          void write_bit(u_char bitval);   /* 向DS18B20写入1位     */
  40          u_char read_byte(void);          /* 从DS18B20读出1个字节 */
  41          void write_byte(u_char val);     /* 向DS18B20写入1个字节 */
  42          u_char get_temperature(void);    /* 读取温度子程序       */
  43          /* 声明结束 */
  44          
  45          u_int temperature = 0;
  46          
  47          
  48          /* 延时子程序           */
  49          void delay_18b20 (u_int us)
  50          {
  51   1          while (us--);
  52   1      }
  53          
  54          /* 初始化DS18B20子程序  */
  55          bit ow_reset(void)
C51 COMPILER V7.09   DS18B20                                                               10/09/2005 20:45:34 PAGE 2   

  56          {
  57   1          bit presence = 0;
  58   1          DQ = 1;
  59   1          DQ = 0;
  60   1          delay_18b20(80);             /* 保持低电平480μs以上 */
  61   1          DQ = 1;
  62   1          delay_18b20(14);             /* 等待DS18B20响应     */
  63   1          presence = DQ;
  64   1      
  65   1          return presence;
  66   1      }
  67          
  68          /* 从DS18B20读出1位     */
  69          bit read_bit(void)
  70          {
  71   1          DQ = 0;
  72   1          delay_18b20(0);              /* 保持低电平1us以上   */
  73   1          DQ = 1;
  74   1      
  75   1          if(DQ)
  76   1          {
  77   2              return 1;
  78   2          }
  79   1          else
  80   1          {
  81   2              return 0;
  82   2          }
  83   1      }
  84          
  85          /* 向DS18B20写入1位     */
  86          void write_bit(u_char bitval)
  87          {
  88   1          DQ = 0;
  89   1          delay_18b20(0);              /* 主机在大于1us小于15us之内写数据 */
  90   1          if(bitval)
  91   1          {
  92   2              DQ = 1;
  93   2          }
  94   1          delay_18b20(10);             /* DS18B20在15us到60us内采样数据  */
  95   1      
  96   1          DQ = 1;
  97   1      }
  98          
  99          /* 从DS18B20读出1个字节 */
 100          u_char read_byte(void)
 101          {
 102   1          u_char i;
 103   1          u_char value = 0;
 104   1      
 105   1          for (i = 0; i < 8; i++)
 106   1          {
 107   2              if(read_bit())
 108   2              {
 109   3                  value |= (0x01<<i);
 110   3              }
 111   2              delay_18b20(10);         /*  读时序至少60us */
 112   2          }
 113   1          return(value);
 114   1      }
 115          
 116          /* 向DS18B20写入1个字节 */
 117          void write_byte(u_char val)
C51 COMPILER V7.09   DS18B20                                                               10/09/2005 20:45:34 PAGE 3   

 118          {
 119   1          u_char i;
 120   1          u_char temp;
 121   1      
 122   1          for (i = 0; i < 8; i++)      /* 从LSB开始写入,每次写1位 */
 123   1          {
 124   2              temp = val>>i;
 125   2              temp &= 0x01;
 126   2              write_bit(temp);
 127   2          }
 128   1      }
 129          
 130          /* 读取温度子程序       */
 131          u_char get_temperature(void)
 132          {
 133   1          u_char tempture_msb = 0;
 134   1          u_char tempture_lsb = 0;
 135   1      
 136   1          temperature = 0;
 137   1      
 138   1          ow_reset();          /* 发送复位信号     */
 139   1          delay_18b20(20);
 140   1          write_byte(0xcc);    /* 跳过ROM          */
 141   1          write_byte(0x44);    /* 发送转换温度命令 */
 142   1          ow_reset();
 143   1          delay_18b20(14);
 144   1          write_byte(0xcc);
 145   1          write_byte(0xBE);    /* 发送读memory命令 */
 146   1          
 147   1          tempture_lsb =read_byte();
 148   1          tempture_msb =read_byte();
 149   1          
 150   1          temperature |= tempture_msb;
 151   1          temperature <<= 8;
 152   1          temperature |= tempture_lsb;
 153   1          temperature = temperature * 0.0625;
 154   1          
 155   1          return (temperature);
 156   1      }
 157          
 158          
C51 COMPILER V7.09   DS18B20                                                               10/09/2005 20:45:34 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
_delay_18b20 . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  us . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
u_long . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_LONG   -----  4
u_short. . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0083H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
u_int. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
_write_byte. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0007H  -----
  val. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  temp . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
_write_bit . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  bitval . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
read_byte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
temperature. . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0000H  2
read_bit . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
get_temperature. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  tempture_msb . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  tempture_lsb . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
ow_reset . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  presence . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
u_char . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


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