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

📄 ds1820.lst

📁 18b20四位小数温度显示,18b20四位小数温度显示
💻 LST
字号:
C51 COMPILER V7.06   DS1820                                                                10/27/2008 22:55:09 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS1820
OBJECT MODULE PLACED IN DS1820.OBJ
COMPILER INVOKED BY: D:\Cs1.6中文版\C51\BIN\C51.EXE DS1820.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /**********************************************************
   2          *DS1820驱动程序
   3          *版本:V1.0
   4          **********************************************************/
   5          #include <reg52.h>
   6          //引脚定义
   7          sbit DS1820_DQ= P1^4; //单总线引脚
   8          //函数声明
   9          bit DS1820_Reset();
  10          void DS1820_WriteData(unsigned char wData);
  11          unsigned char DS1820_ReadData();
  12          //存放温度数据
  13          unsigned char data temperature[2]; //将温度存储在低128RAM单元
  14          /**********************************************************
  15          *读温度数据函数
  16          **********************************************************/
  17          void read_temp()
  18          {
  19   1       unsigned char i;
  20   1       DS1820_Reset();    //复位
  21   1       DS1820_WriteData(0xcc); //跳过ROM命令
  22   1       DS1820_WriteData(0x44); //温度转换命令
  23   1       DS1820_Reset();    //复位
  24   1       DS1820_WriteData(0xcc); //跳过ROM命令
  25   1       DS1820_WriteData(0xbe); //读DS1820温度暂存器命令
  26   1       for (i=0;i<2;i++)
  27   1        {
  28   2       temperature[i]=DS1820_ReadData();
  29   2       }
  30   1       DS1820_Reset();    //复位,结束读数据
  31   1       }
  32          
  33          /**********************************************************
  34          *DS1820复位及存在检测(通过存在脉冲可以判断DS1820是否损坏)
  35          *函数名称:DS1820_Reset()
  36          *说明:函数返回一个位标量(0或1)flag=0存在,反之flag=1不存在
  37          **********************************************************/
  38          bit DS1820_Reset()
  39          {
  40   1       unsigned char i;
  41   1       bit flag;    //DS1820存在标志位
  42   1       DS1820_DQ = 0;  //拉低总线
  43   1       for (i=240;i>0;i--);//延时480微秒,产生复位脉冲
  44   1       DS1820_DQ = 1;  //释放总线
  45   1       for (i=40;i>0;i--); //延时80微秒对总线采样
  46   1       flag =  DS1820_DQ;
  47   1       for (i=200;i>0;i--); //延时400微秒等待总线恢复
  48   1       return (flag);  //根据flag的值可以知道DS1820是否存在或损坏
  49   1      }     //可以加声音告警提示DS1820故障
  50          /**********************************************************
  51          *写数据到DS1820
  52          *函数名称:DS1820_WriteData()
  53          **********************************************************/
  54          void DS1820_WriteData(unsigned char wData)
  55          {
C51 COMPILER V7.06   DS1820                                                                10/27/2008 22:55:09 PAGE 2   

  56   1       unsigned char i,j;
  57   1       for (i=8;i>0;i--)
  58   1        {
  59   2        DS1820_DQ = 0;  //拉低总线,产生写信号
  60   2        for (j=2;j>0;j--); //延时4us
  61   2        DS1820_DQ = wData&0x01; //发送1位
  62   2        for (j=30;j>0;j--); //延时60us,写时序至少要60us
  63   2        DS1820_DQ = 1;  //释放总线,等待总线恢复
  64   2        wData>>=1; //准备下一位数据的传送
  65   2       }
  66   1      }
  67          /**********************************************************
  68          *从DS1820中读出数据
  69          *函数名称:DS1820_ReadData()
  70          **********************************************************/
  71          unsigned char DS1820_ReadData()
  72          {
  73   1       unsigned char i,j,TmepData;
  74   1       for (i=8;i>0;i--)
  75   1        {
  76   2        TmepData>>=1;
  77   2        DS1820_DQ = 0;   //拉低总线,产生读信号
  78   2        for (j=2;j>0;j--); //延时4us
  79   2         DS1820_DQ = 1; //释放总线,准备读数据
  80   2        for (j=4;j>0;j--); //延时8微秒读数据
  81   2         if (DS1820_DQ == 1)
  82   2          TmepData |= 0x80;
  83   2        for (j=30;j>0;j--); //延时60us
  84   2        DS1820_DQ = 1;  //拉高总线,准备下一位数据的读取.
  85   2       }
  86   1       return (TmepData);//返回读到的数据
  87   1      }
  88          


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