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

📄 ds18b20c2.lst

📁 单片机C语言教程
💻 LST
字号:
C51 COMPILER V8.02   DS18B20C2                                                             08/10/2007 21:47:40 PAGE 1   


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

line level    source

   1          /****************************************************************
   2          /* 这是直接用C51高级语言编写的DS18B20转换程序-没有调用汇编语言,*/
   3          /* 文件名DS18B20C2.C                                             */
   4          /* 功能:本程序主要是读出单个DS18B20芯片转换后的温度值,范围    */
   5          /*    (-55℃~125℃)。单片机的P1.0接DS18B20 的BQ。              */
   6          /*    flag为温度值的正负号标志单元, flag 为"1"时表示温度值为负值*/
   7          /*    ,为"0"时表示温度值为正值。 变量cc中保存读出的温度值。    */
   8          /*    本程序仅适合单个DS18B20 和51单片机的连接,晶振为12MHZ左右。*/
   9          /****************************************************************/
  10          #include <REG52.H>
  11          
  12          #define uchar unsigned char
  13          #define uint unsigned int
  14          
  15          sbit DQ =P1^0;                           //定义端口
  16          union{
  17              uchar c[2];
  18              uint x;
  19          }temp;
  20          uchar flag;
  21          uint cc;
  22          
  23          void delay(uint useconds)                 //延时程序
  24          {
  25   1        for(;useconds>0;useconds--);
  26   1      }
  27          
  28          uchar ow_reset(void)                       //复位
  29          {
  30   1        uchar presence;
  31   1        DQ = 0;                                  // DQ 低电平
  32   1        delay(29);                               // 480us
  33   1        DQ = 1;                                  // DQ 高电平
  34   1        delay(3);                                // 等待
  35   1        presence = DQ;                           // presence 信号
  36   1        delay(25);
  37   1        return(presence);                        // 0允许, 1 = 禁止
  38   1      }                                          
  39          
  40          
  41          uchar read_byte(void)         //从1-wire 总线上读取一个字节
  42          {
  43   1        uchar i;
  44   1        uchar value = 0;
  45   1        for (i=8;i>0;i--)
  46   1        {
  47   2          value>>=1;
  48   2          DQ = 0;
  49   2          DQ = 1;
  50   2          delay(1);
  51   2          if(DQ)value|=0x80;
  52   2          delay(6);
  53   2        }
  54   1        return(value);
  55   1      }
C51 COMPILER V8.02   DS18B20C2                                                             08/10/2007 21:47:40 PAGE 2   

  56          
  57          void write_byte(uchar val)     //向 1-wire 总线上写一个字节
  58          {
  59   1        uchar i;
  60   1        for (i=8; i>0; i--)          // 一次写一字节
  61   1        {
  62   2          DQ = 0;
  63   2          DQ = val&0x01;
  64   2          delay(5);
  65   2          DQ = 1;
  66   2          val=val/2;
  67   2        }
  68   1        delay(5);
  69   1      }
  70          
  71          uchar Read_Temperature(void)    //读取温度
  72          {
  73   1        ow_reset();
  74   1        write_byte(0xCC);             // 跳过 ROM
  75   1        write_byte(0xBE);             // 读
  76   1        temp.c[1]=read_byte();
  77   1        temp.c[0]=read_byte();
  78   1        ow_reset();
  79   1        write_byte(0xCC);
  80   1        write_byte(0x44);             // 开始
  81   1        return temp.x/2;
  82   1      }
  83          void main()                     //主程序
  84          {
  85   1        delay(10);
  86   1        EA=0;
  87   1        flag=0;
  88   1        Read_Temperature();           //读取双字节温度
  89   1        cc=temp.c[0]*256.0+temp.c[1];
  90   1        if  (temp.c[0]>0xf8) {flag=1;cc=~cc+1;}
  91   1        cc=cc*0.0625;                 //计算出温度值
  92   1        while(1);
  93   1      }


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