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

📄 ds18b02采样.lst

📁 一个实用的万年历程序
💻 LST
字号:
C51 COMPILER V8.08   DS18B02采裚                                                           05/04/2008 12:45:49 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DS18B02采裚
OBJECT MODULE PLACED IN DS18B02采样.OBJ
COMPILER INVOKED BY: D:\program files\Keil 3.2\C51\BIN\C51.EXE DS18B02采样.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h> 
   2          sbit DQ =P3^7;   //定义通信端口
   3          
   4          //延时函数
   5          
   6          void delay(unsigned int i)
   7          {
   8   1      while(i--);
   9   1      }
  10          
  11          //初始化函数
  12          Init_DS18B20(void)
  13          {
  14   1      unsigned char x=0;
  15   1      DQ = 1;     //DQ复位
  16   1      delay(8);   //稍做延时
  17   1      DQ = 0;     //单片机将DQ拉低
  18   1      delay(80);      //精确延时 大于 480us
  19   1      DQ = 1;     //拉高总线
  20   1      delay(14);
  21   1      x=DQ;       //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  22   1      delay(20);
  23   1      }
  24          
  25          //读一个字节
  26          ReadOneChar(void)
  27          {
  28   1      unsigned char i=0;
  29   1      unsigned char dat = 0;
  30   1      for (i=8;i>0;i--)
  31   1      {
  32   2         DQ = 0; // 给脉冲信号
  33   2         dat>>=1;     //1us以上
  34   2         DQ = 1; // 给脉冲信号
  35   2         if(DQ) //以上3条程序必须在15us以上
  36   2          dat|=0x80;
  37   2         delay(4); //读时隙至少延时60us
  38   2      }
  39   1      return(dat);
  40   1      }
  41          
  42          //写一个字节指令
  43          WriteOneChar(unsigned char dat)
  44          {
  45   1      unsigned char i=0;
  46   1      for (i=8; i>0; i--)
  47   1      {
  48   2         DQ = 0;
  49   2         DQ = dat&0x01;
  50   2         delay(5);//至少在15us以上有效
  51   2         DQ = 1;
  52   2         dat>>=1;
  53   2         
  54   2      }
  55   1      
C51 COMPILER V8.08   DS18B02采裚                                                           05/04/2008 12:45:49 PAGE 2   

  56   1      }
  57          
  58          //读取温度
  59          extern unsigned char ReadTemperature(void)
  60          {
  61   1      unsigned char a=0;
  62   1      unsigned char b=0;
  63   1      unsigned int t=0;
  64   1      Init_DS18B20();
  65   1      WriteOneChar(0xCC); // 跳过读序号列号的操作
  66   1      WriteOneChar(0x44); // 启动温度转换
  67   1      Init_DS18B20();
  68   1      WriteOneChar(0xCC); //跳过读序号列号的操作
  69   1      WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  70   1      a=ReadOneChar();
  71   1      b=ReadOneChar();
  72   1      t=(a>>4)+((b<<4)&0x7f); //读温度整数部分
  73   1      return(t);
  74   1      }
  75          


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