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

📄 ds18b20_2.lst

📁 一个集合DS18B20的多路温度测量系统,加上adc0809数据采集,加上1602液晶显示的综合数据处理系统,有较高学习价值.
💻 LST
字号:
C51 COMPILER V8.02   DS18B20_2                                                             01/17/2007 05:44:25 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS18B20_2
OBJECT MODULE PLACED IN DS18b20_2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18b20_2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include <stdio.h>
   3          #include <INTRINS.H>                              //为调用nop空指令需要
   4          
   5          sbit DQ = P3^7;
   6          
   7          void delay(unsigned int t)   /*延时函数*/
   8          {
   9   1              for(;t>0;t--);
  10   1      }
  11          
  12          /************DS18b20复位函数************/
  13          ow_reset(void)       
  14          {
  15   1              unsigned char presence=1;
  16   1              while(presence)
  17   1              {
  18   2                      while(presence)
  19   2                      {
  20   3                              DQ=1;_nop_();_nop_();
  21   3                              DQ=0;
  22   3                              delay(50);                  //550us  
  23   3                              DQ=1;
  24   3                              delay(6);                   //66us
  25   3                              presence=DQ;                  //presence=0继续下一步
  26   3                      }
  27   2                      delay(45);                  //延时500us
  28   2                      presence=~DQ;
  29   2              }
  30   1              DQ=1;
  31   1      }
  32          
  33          /**********DS18b20读一个字节函数**********/
  34          unsigned char read_byte(void)         
  35          {
  36   1              unsigned char i;
  37   1              unsigned char value = 0;
  38   1              for (i=8;i>0;i--) 
  39   1              { 
  40   2                      DQ=1;_nop_();_nop_();
  41   2                      value>>=1;
  42   2                      DQ=0;_nop_();_nop_();_nop_();_nop_();  //4us
  43   2                      DQ=1;_nop_();_nop_();_nop_();_nop_();  //4us
  44   2                      if(DQ)  value|=0x80;
  45   2                      delay(6);                              //66us
  46   2              }
  47   1              DQ=1;
  48   1              return(value);
  49   1      }
  50          
  51          /************DS18b20写一个字节函数**************/
  52          void write_byte(char val)          
  53          {
  54   1              unsigned char i;
  55   1              for (i=8; i>0; i--) 
C51 COMPILER V8.02   DS18B20_2                                                             01/17/2007 05:44:25 PAGE 2   

  56   1              {
  57   2                      DQ=1;_nop_();_nop_();
  58   2                      DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(); //5us
  59   2                      DQ=val&0x01;                                  //最低为移出
  60   2                      delay(6);                                     //66us
  61   2                      val=val/2;                                    //右移一位
  62   2              }
  63   1              DQ=1;
  64   1              delay(1);
  65   1      }
  66          
  67           /***************读取温度函数**************/
  68          
  69          unsigned int read_temperature(void)          
  70          { 
  71   1              union{
  72   1                unsigned char c[2];
  73   1                unsigned int x;
  74   1              }temp;
  75   1              
  76   1              ow_reset();                 //总线复位
  77   1              write_byte(0xCC);           // 发Skip ROM命令
  78   1              write_byte(0xBE);           // 发读命令
  79   1              temp.c[1]=read_byte();      //温度低8位
  80   1              temp.c[0]=read_byte();      //温度高8位
  81   1              ow_reset();
  82   1              write_byte(0xCC);           //Skip ROM
  83   1              write_byte(0x44);           //发转换命令
  84   1              temp.x<<=4;
  85   1              return (temp.c[0]);
  86   1      }


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