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

📄 +-

📁 基于51单片机的智能温度报警模块化编程
💻
字号:
C51 COMPILER V7.20   DS18B20                                                               04/08/2013 23:13:27 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: D:\软件\keil\C51\BIN\C51.EXE ds18b20.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"pinlink.h"
   2          #include"delay.h"
   3          #include"display.h"
   4          #include"includehead.h"
   5          bit Init_ds18b20(void)
   6          {       
   7   1              bit flag=1;
   8   1              DQ=0;
   9   1              delaynus(60);//大于600us
  10   1              DQ=1;
  11   1              delaynus(2);//20us      
  12   1              flag=DQ;
  13   1              delaynus(25);//250us
  14   1              return flag;
  15   1              
  16   1      }
  17          
  18          void write_byte(unchar i)
  19          {       
  20   1              unchar j;
  21   1              for(j=0;j<8;j++)
  22   1              {       
  23   2                      DQ=0;
  24   2                      delaynus(1);
  25   2                      DQ= (bit)(i&0x01);
  26   2                      delaynus(12);
  27   2                      DQ=1;
  28   2                      _nop_();
  29   2                      _nop_();
  30   2                      i>>=1;
  31   2              }
  32   1              DQ=1;
  33   1      }
  34          
  35          unchar read_byte(void)
  36          {       
  37   1              unchar j,i;
  38   1              for(j=0;j<8;j++)
  39   1              {
  40   2                      DQ=0;
  41   2                      i>>=1;
  42   2                      DQ=1;
  43   2                      delaynus(1);
  44   2                      if(DQ)
  45   2                      i=i|0x80;
  46   2                      delaynus(4);
  47   2                      //DQ=1;
  48   2                      delaynus(1);
  49   2              
  50   2              }
  51   1              DQ=1;
  52   1              return i;
  53   1      
  54   1      
  55   1              
C51 COMPILER V7.20   DS18B20                                                               04/08/2013 23:13:27 PAGE 2   

  56   1      }
  57          unchar ds18b20(void)
  58          {  unchar temph,templ;
  59   1              unchar *bp;//负数标志位
  60   1              uchar flag=0;
  61   1              bp=&flag;
  62   1              l1:Init_ds18b20();
  63   1              write_byte(0xcc);
  64   1              write_byte(0x44);
  65   1              delaynus(700);//每一种操作都要重复下init_ds10820, write_byte(0xcc)
  66   1              Init_ds18b20();
  67   1              write_byte(0xcc);
  68   1              write_byte(0xbe);
  69   1              templ=read_byte();
  70   1              temph=read_byte();
  71   1              if(temph==0xff&&templ==0xff) 
  72   1              goto l1;
  73   1              if(temph>7)//是负数取其补码,在显示的时处理显示'-'
  74   1              {
  75   2                      flag=1;
  76   2                      templ=~templ+1;
  77   2                      temph=~temph;
  78   2              }
  79   1              temph=temph<<4;
  80   1              temph=temph+(templ>>4);//这里我只取了整数部分值,小数部分可用查表来作,或者放大基数来作
  81   1              templ=(templ&0x0f)*10/16;
  82   1              display(temph,bp,templ);
  83   1              return temph;
  84   1      }


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