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

📄 ds18b20.lst

📁 智能打铃系统(MCU)端程序
💻 LST
字号:
C51 COMPILER V7.06   DS18B20                                                               12/17/2006 14:56:14 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE DS18B20.c LARGE OPTIMIZE(SIZE)

stmt level    source

   1          #include <REG52.H>
   2          #include <intrins.h>
   3          
   4          #define uint unsigned int
   5          
   6          
   7          sbit DQ=P3^6;
   8          
   9          void delay_us(unsigned char us);
  10          unsigned char _18b20_init(void);
  11          unsigned char _18b20_read();
  12          void Read_Temperature(unsigned char *p);
  13          void _18b20_write(unsigned char commond);
  14          
  15          void delay(unsigned char useconds)
  16          {
  17   1      for(;useconds>0;useconds--);
  18   1      }
  19          
  20          
  21          unsigned char _18b20_init(void)
  22          {
  23   1        unsigned char presence;
  24   1        EA=0;
  25   1        DQ = 0;        //拉低总线
  26   1        delay(29);    // 保持 480us
  27   1        DQ = 1;       // 释放总线
  28   1        delay(3);     // 等待回复
  29   1        presence = DQ; // 读取信号
  30   1        delay(25);    // 等待结束信号
  31   1        return(presence); // 返回   0:正常 1:不存在
  32   1      }     
  33          
  34          //从 1-wire 总线上读取一个字节
  35          unsigned char _18b20_read(void)
  36          {
  37   1      
  38   1        unsigned char i;
  39   1        unsigned char value = 0;
  40   1        for (i=8;i>0;i--)
  41   1        {
  42   2          value>>=1;
  43   2          DQ = 0; 
  44   2              _nop_();
  45   2              _nop_();
  46   2              _nop_();
  47   2          DQ = 1;
  48   2          delay(1);  
  49   2          if(DQ)value|=0x80;
  50   2          delay(6); 
  51   2        }
  52   1        return(value);
  53   1      }
  54          
  55          //向 1-WIRE 总线上写一个字节
C51 COMPILER V7.06   DS18B20                                                               12/17/2006 14:56:14 PAGE 2   

  56          void _18b20_write(char val)
  57          {
  58   1        unsigned char i;
  59   1        EA=0;
  60   1        for (i=8; i>0; i--) // 一次写一位
  61   1        {
  62   2          DQ = 0; // 
  63   2              _nop_();
  64   2              _nop_();
  65   2              _nop_();
  66   2          DQ = val&0x01;
  67   2          delay(5); // 
  68   2          DQ = 1;
  69   2          val=val/2;
  70   2        }
  71   1        EA=1;
  72   1        delay(5);
  73   1      }
  74          
  75          //读取和显示温度
  76          void Read_Temperature(unsigned char *p)
  77          {
  78   1      
  79   1        unsigned char i;
  80   1        unsigned char  x;
  81   1        unsigned char th,tl;
  82   1       
  83   1        for(i=0;i<10;i++)
  84   1        ;
  85   1        _18b20_init();
  86   1        for(i=0;i<10;i++)
  87   1        ;
  88   1        _18b20_write(0xCC); // Skip ROM
  89   1        _18b20_write(0x44); // 转换温度
  90   1        for(i=0;i<254;i++)
  91   1        ;
  92   1        _18b20_init();
  93   1        for(i=0;i<10;i++)
  94   1        ;
  95   1        _18b20_write(0xCC); //Skip ROM
  96   1        _18b20_write(0xbe); // 读取寄存器
  97   1        tl=_18b20_read();//读出温度低8位
  98   1        th=_18b20_read();//读出温度高8位
  99   1        tl &= 0xf0;
 100   1        tl >>= 4;
 101   1        *(p+3)=tl/2+'0';
 102   1        *(p+2)='.';
 103   1        x=((th&0x07)<<4)+tl;
 104   1        *p=x/10+'0';//显示温度十位数
 105   1        *(p+1)=x%10+'0';//显示温度个位数
 106   1      
 107   1      }
 108          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    231    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.06   DS18B20                                                               12/17/2006 14:56:14 PAGE 3   

   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 + -