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

📄 ds18b20.lst

📁 基于STC单片机的发酵塔温控装置的控制代码.
💻 LST
字号:
C51 COMPILER V7.20   DS18B20                                                               07/26/2006 17:37:29 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil V7.20\C51\BIN\C51.EXE DS18B20.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //*************************************************************************************************
   2          //  Module Name :  DS18B20.C 
   3          //  CreateDate  :  2006-07-13 
   4          //  ModifData   :  2006-07-13 
   5          //  Description :  For STC MCU 
   6          //  Author      :  Explorer01 
   7          //  Version     :  V1.0  
   8          //*************************************************************************************************
   9          // 
  10          //-------------------------------------------------------------------------------------------------
  11          // Includes 
  12          //-------------------------------------------------------------------------------------------------
  13          
  14          #include <STC51.H>
  15          #include "DS18B20.H"
  16          
  17          //-------------------------------------------------------------------------------------------------
  18          // Global CONSTANTS
  19          //-------------------------------------------------------------------------------------------------
  20          // 
  21          unsigned int TEMPER;
  22          
  23          //=================================================================================================
  24          // Functions
  25          //=================================================================================================
  26          //-------------------------------------------------------------------------------------------------
  27          // Delay, Fosc = 11.0592MHz 
  28          void mDelay( unsigned int msecond )
  29          {
  30   1              while( msecond-- );
  31   1      }
  32          
  33          //-------------------------------------------------------------------------------------------------
  34          //-------------------------------------------------------------------------------------------------
  35          // Send a byte to DS18B20 
  36          void DS18B20Write( unsigned char datum )
  37          {
  38   1              unsigned char i;
  39   1              
  40   1              for( i=0; i<8; i++ ) 
  41   1              {
  42   2                      // 60us -- 120us 
  43   2                      DS18B20_DQ = 0;
  44   2                      mDelay( 5 );                                            // 1us -- 15us 
  45   2                      DS18B20_DQ = datum & 0x01;
  46   2                      mDelay( 80 );                                           // Delay : Master write '0'/'1' slot : 60us -- 120us 
  47   2                      DS18B20_DQ = 1;
  48   2                      datum    >>= 1;
  49   2              }
  50   1      }
  51          
  52          //-------------------------------------------------------------------------------------------------
  53          // Read a byte from DS18B20 
  54          unsigned char DS18B20Read( void )
  55          {
C51 COMPILER V7.20   DS18B20                                                               07/26/2006 17:37:29 PAGE 2   

  56   1              unsigned char i, datum=0;
  57   1              
  58   1              for( i=0; i<8; i++ )
  59   1              {
  60   2                      // 60us -- 120us 
  61   2                  DS18B20_DQ = 0;
  62   2                      datum    >>= 1;
  63   2                      mDelay( 5 );                                            // 1us -- 15us 
  64   2                      DS18B20_DQ = 1;
  65   2                      mDelay( 5 );                                            // <= 15us 
  66   2                      if( DS18B20_DQ ) datum |= 0x80;
  67   2                      mDelay( 60 );                                           // Delay : Master read '0'/'1' slot : 60us -- 120us 
  68   2                      DS18B20_DQ = 1;
  69   2              }
  70   1              
  71   1              return( datum );
  72   1      }
  73          
  74          //=================================================================================================
  75          //=================================================================================================
  76          // 
  77          //-------------------------------------------------------------------------------------------------
  78          // DS18B20 Initialization Procedure 
  79          void DS18B20RST( void )
  80          {
  81   1              DS18B20_DQ = 0;
  82   1              mDelay( 960 );                                                  // Master Tx "reset puls" : (480us -- 960us) 
  83   1              DS18B20_DQ = 1;
  84   1              // Master Rx : >= 480us 
  85   1              mDelay( 100 );                                                  // DS18B20 wait : 15us -- 60us 
  86   1              if( DS18B20_DQ ) mDelay( 150 ); 
  87   1              mDelay( 500 ); 
  88   1      }
  89          
  90          //-------------------------------------------------------------------------------------------------
  91          // Get the temperature 
  92          void DS18B20Temperature( void )
  93          {
  94   1              unsigned char TEMPER_L,TEMPER_H;
  95   1              unsigned int  temp;
  96   1              
  97   1              DS18B20RST( ); 
  98   1              DS18B20Write( 0xCC );                                   // Skip ROM 
  99   1              DS18B20Write( 0xBE );                                   // Read Scratchpad 
 100   1              
 101   1              TEMPER_L = DS18B20Read( );                              // LSB 
 102   1              TEMPER_H = DS18B20Read( );                              // MSB 
 103   1              
 104   1              temp   = TEMPER_H;
 105   1              temp <<= 8;
 106   1              temp  |= TEMPER_L;
 107   1      
 108   1              TEMPER = temp;
 109   1              
 110   1      //      TEMPER  = temp/2*125;                                   // Temperatre regulate 
 111   1      //      TEMPER += temp%2*62;
 112   1              
 113   1              DS18B20RST( ); 
 114   1              DS18B20Write( 0xCC );                                   // Skip ROM 
 115   1              DS18B20Write( 0x44 );                                   // Start next temperature convertion  
 116   1      }
 117          
C51 COMPILER V7.20   DS18B20                                                               07/26/2006 17:37:29 PAGE 3   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    162    ----
   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 + -