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

📄 ds18b20.lst

📁 这是广西大学生设计大赛的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DS18B20                                                               04/26/2008 21:37:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: D:\Keil1\C51\BIN\C51.EXE ds18b20.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          #include "ds18b20.h"
   4          #include "lcd.h"
   5          #include <REGX51.H>
   6          
   7           
   8          
   9          
  10          #define OWB   P3_0
  11          
  12           
  13          
  14          BYTE   idata owb_nCntDevice = 0;
  15          BYTE   idata owb_CacheDeviceIndex = 0xff;
  16          OWBROM idata owb_CacheDeviceROM;
  17          BYTE   idata owb_SearchDeviceIndex = 0xff;
  18          OWBROM idata owb_SearchDeviceROM;
  19          
  20          
  21          //////////////////////////////////////////////////////////////////
  22          //
  23          //               ds18b20 functions
  24          
  25          
  26          void owbDeviceSave(BIT withSearchDevice)
  27          {
  28   1       BYTE i;
  29   1        
  30   1       owbInit();
  31   1       owbWriteByte( 0x55 );
  32   1       for (i=0;i<8;i++)
  33   1       {
  34   2        if (withSearchDevice)
  35   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
  36   2        else
  37   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
  38   2       }
  39   1       owbWriteByte( 0x48 );
  40   1      }
  41          
  42          
  43          void owbReadMeasure(TEMPE * pT, BIT withSearchDevice)
  44          {
  45   1       BYTE i;
  46   1      
  47   1       owbInit();
  48   1       owbWriteByte( 0x55 );
  49   1       for (i=0;i<8;i++)
  50   1       {
  51   2        if (withSearchDevice)
  52   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
  53   2        else
  54   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
  55   2       }
C51 COMPILER V8.02   DS18B20                                                               04/26/2008 21:37:29 PAGE 2   

  56   1       owbWriteByte( 0xbe );
  57   1       pT->tl = owbReadByte();
  58   1       pT->th = owbReadByte();
  59   1      
  60   1        owbInit();
  61   1       owbWriteByte( 0x55 );
  62   1       for (i=0;i<8;i++)
  63   1       {
  64   2        if (withSearchDevice)
  65   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
  66   2        else
  67   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
  68   2       }
  69   1       owbWriteByte( 0x44 );
  70   1      }
  71          
  72          
  73          void owbReadAlarmValue(BYTE * pTH, BYTE * pTL, BIT withSearchDevice)
  74          {
  75   1       BYTE i;
  76   1      
  77   1       owbInit();
  78   1       owbWriteByte( 0x55 );
  79   1       for (i=0;i<8;i++)
  80   1       {
  81   2        if (withSearchDevice)
  82   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
  83   2        else
  84   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
  85   2       }
  86   1       owbWriteByte( 0xbe );
  87   1       owbReadByte();
  88   1       owbReadByte();
  89   1       pTH[0] = owbReadByte();
  90   1       pTL[0] = owbReadByte();
  91   1      }
  92          
  93          
  94          void owbWriteConfig(BYTE th, BYTE tl, BYTE config, BIT withSearchDevice)
  95          {
  96   1       BYTE i;
  97   1        
  98   1       owbInit();
  99   1       owbWriteByte( 0x55 );
 100   1       for (i=0;i<8;i++)
 101   1       {
 102   2        if (withSearchDevice)
 103   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
 104   2        else
 105   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
 106   2       }
 107   1       owbWriteByte( 0x4E );
 108   1       owbWriteByte( th );
 109   1       owbWriteByte( tl );
 110   1       owbWriteByte( config );
 111   1      
 112   1       owbDeviceSave(withSearchDevice);
 113   1      }
 114          
 115          
 116          void owbDeviceInit(BIT withSearchDevice)
 117          {
C51 COMPILER V8.02   DS18B20                                                               04/26/2008 21:37:29 PAGE 3   

 118   1       BYTE i,th,tl;
 119   1       
 120   1       //load config 
 121   1       owbInit();
 122   1       owbWriteByte( 0x55 );
 123   1       for (i=0;i<8;i++)
 124   1       {
 125   2        if (withSearchDevice)
 126   2         owbWriteByte( owb_SearchDeviceROM.b[i] );
 127   2        else
 128   2         owbWriteByte( owb_CacheDeviceROM.b[i] );
 129   2       }
 130   1       owbWriteByte( 0xB8 );
 131   1      
 132   1       owbReadAlarmValue( &th, &tl, withSearchDevice );
 133   1       owbWriteConfig( th, tl, OWB_DEFAULTCONFIG, withSearchDevice );
 134   1      }
 135          
 136           
 137          
 138          //////////////////////////////////////////////////////////////////
 139          //               for debug only
 140          /*
 141          void owbDebugMain(void)
 142          {
 143          }
 144          */
 145           
 146          
 147          ////////////////////////////////////////////////////////////
 148          //  1-wire 位操作
 149          
 150          BIT owbInit(void)
 151          {
 152   1       BYTE save = ACC;
 153   1       BIT rt;
 154   1      
 155   1      //    P3 = 0x00;  //for debug only (supply power)
 156   1      //    P3_2 = 1;  //for debug only (supply power)
 157   1      
 158   1       // write '0'
 159   1       ACC = 250;
 160   1       do{
 161   2        OWB = 0;
 162   2        ACC--;
 163   2       }while(ACC);
 164   1       // write '1'
 165   1       ACC = 10;
 166   1       do{
 167   2        OWB = 1;
 168   2        ACC--;
 169   2       }while(ACC);
 170   1       rt = ~OWB;
 171   1       ACC = 250;
 172   1       do{
 173   2        OWB = 1;
 174   2        ACC--;
 175   2       }while(ACC);
 176   1      
 177   1      
 178   1       ACC = save;
 179   1      
C51 COMPILER V8.02   DS18B20                                                               04/26/2008 21:37:29 PAGE 4   

 180   1       return rt;
 181   1      }
 182          
 183          BIT owbReadBit(void)
 184          {
 185   1       BIT rt;
 186   1       BYTE save;
 187   1      
 188   1       OWB = 0; OWB = 0;
 189   1       OWB = 1; OWB = 1; OWB = 1; OWB = 1;
 190   1       OWB = 1; OWB = 1; OWB = 1; OWB = 1;
 191   1       rt = OWB;
 192   1      
 193   1       save = ACC;
 194   1       ACC = 45;
 195   1       do{
 196   2        OWB = 1;
 197   2        ACC--;
 198   2       }while(ACC);
 199   1       ACC = save;
 200   1      
 201   1       return rt;
 202   1      }
 203          
 204          void owbWriteBit(BIT b)
 205          {
 206   1       BYTE save = ACC;
 207   1       ACC = 30;
 208   1      
 209   1       if (b)
 210   1       {
 211   2        // write '1'
 212   2        OWB = 0; OWB = 0;
 213   2        do{
 214   3         OWB = 1;
 215   3         ACC--;
 216   3        }while(ACC);
 217   2       }
 218   1       else
 219   1       {
 220   2        // write '0'
 221   2        do{
 222   3         OWB = 0;
 223   3         ACC--;
 224   3        }while(ACC);
 225   2       }
 226   1       OWB = 1; OWB = 1; OWB = 1; OWB = 1;
 227   1       OWB = 1; OWB = 1; OWB = 1; OWB = 1;
 228   1      
 229   1       ACC = save;
 230   1      }
 231          
 232          
 233          //////////////////////////////////////////////////////////////////
 234          //               字节操作
 235          
 236          void owbWriteByte(BYTE byte)
 237          {
 238   1       BYTE i;
 239   1       EA = 0;
 240   1       for (i=0;i<8;i++)
 241   1       {
C51 COMPILER V8.02   DS18B20                                                               04/26/2008 21:37:29 PAGE 5   

 242   2        owbWriteBit(byte & 0x01);
 243   2        byte>>=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -