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

📄 ds18b20.lst

📁 DS1302 18B20程序第一版
💻 LST
字号:
C51 COMPILER V9.01   DS18B20                                                               04/28/2012 12:23:32 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "DS18B20.h"
   2          
   3          volatile char wendu[3];
   4          
   5          void delay_18b20(unsigned int t)
   6          {
   7   1        while(t--);
   8   1      }
   9          
  10          unsigned char init_18b20()
  11          {
  12   1        unsigned char i=0;
  13   1        DQ=1;
  14   1        DQ=0;
  15   1        delay_18b20(79);  //延时480us-960us
  16   1        DQ=1;
  17   1        delay_18b20(4);   //延时15us-60us
  18   1        i=DQ;
  19   1        while(!DQ);
  20   1        return(i);
  21   1      }
  22          
  23          
  24          unsigned char read_18b20_byte( void )
  25          {
  26   1        unsigned char times,ram;
  27   1        ram = 0;
  28   1        for ( times = 8; times > 0; times--)
  29   1        {
  30   2          ram >>= 1; //将采样到的数据依次向低位移
  31   2          DQ=0;    //将总线拉低,然后释放。整个过程不大于15us
  32   2          _nop_(); _nop_(); //delay 2us
  33   2          DQ=1;
  34   2          _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  35   2          if( DQ )   //采样总线上的数据
  36   2          {
  37   3           ram |= 0x80;
  38   3          }    
  39   2          delay_18b20(4);  //延时,使整个读操作时序大于60us.
  40   2          
  41   2        } 
  42   1        return ram;
  43   1      }
  44          
  45          
  46          void write_18b20_byte(unsigned char command)
  47          {
  48   1       unsigned char i;
  49   1        for (i = 8; i > 0; i--)
  50   1        {
  51   2          if((command & 0x01))
  52   2          {
  53   3            //写1操作
  54   3            DQ=0;    
  55   3            _nop_(); _nop_();
C51 COMPILER V9.01   DS18B20                                                               04/28/2012 12:23:32 PAGE 2   

  56   3            DQ=1;           //将DQ拉低,延时2us后释放,以上操作必须在15us内完成
  57   3            delay_18b20(4); //延时,使整个操作大于60us。本次52us
  58   3            
  59   3          }
  60   2          else
  61   2          {
  62   3            //写0操作
  63   3            DQ=0;
  64   3            delay_18b20(4); // 本次 52us
  65   3          }
  66   2          
  67   2          DQ=1; 
  68   2          command >>= 1;   //两个写操作之间,至少有1us的间隙,此语句4us
  69   2        }
  70   1      }
  71          
  72          void get_wendu()
  73          {
  74   1        unsigned char a,b;
  75   1        float get_temp;
  76   1        int temp1,temp2;
  77   1        init_18b20();
  78   1        write_18b20_byte(0xcc);
  79   1        write_18b20_byte(0x44); //温度转换
  80   1        init_18b20();
  81   1        write_18b20_byte(0xcc);
  82   1        write_18b20_byte(0xbe); //读温度
  83   1        a=read_18b20_byte();
  84   1        b=read_18b20_byte();
  85   1        temp1=b;
  86   1        temp1=temp1<<8;
  87   1        temp1=temp1|a;
  88   1        get_temp=temp1*0.0625;
  89   1        temp2=get_temp*10+0.5;          //扩大十倍并四舍五入
  90   1        wendu[0]=temp2%1000/100;    //十位
  91   1        wendu[1]=temp2%1000%100/10; //个位
  92   1        wendu[2]=temp2%1000%100%10; //小数位
  93   1      }


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