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

📄 ds2401.lst

📁 dallas ID号芯片DS2401的读取
💻 LST
字号:
C51 COMPILER V7.50   DS2401                                                                06/11/2008 15:16:27 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DS2401
OBJECT MODULE PLACED IN DS2401.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE DS2401.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include "sys.h"
   3          //******************************DS2401初始化*************************
   4          
   5          unsigned char DS2401Init(void)
   6          {
   7   1              unsigned char result;
   8   1              DelayNus(G);
   9   1              DS2401IO = 0; // Drives DQ low
  10   1              DelayNus(H);
  11   1              DS2401IO = 1; // Releases the bus
  12   1              DelayNus(I);
  13   1              if(DS2401IO==0)
  14   1              result = 1;
  15   1              else 
  16   1              result = 0;
  17   1              DelayNus(J); // Complete the reset sequence recovery
  18   1              return result; // Return sample presence pulse result
  19   1              //1代表初始化成功,0代表失败
  20   1      }
  21          
  22          //******************************发送读写命令*************************
  23          void SendOrderToDS2401(unsigned char order)
  24          {
  25   1              unsigned char Temp = 8;
  26   1              while(Temp)
  27   1                      {
  28   2                      if(order&0x80)
  29   2                              {
  30   3                              DS2401IO = 0;
  31   3                              DelayNus(40);//拉低10us
  32   3                              DS2401IO = 1;//拉高
  33   3                              DelayNus(200);
  34   3                              }
  35   2                      else
  36   2                              {
  37   3                              DS2401IO = 0;
  38   3                              DelayNus(100);//拉低100us
  39   3                              DS2401IO = 1;//拉高
  40   3                              DelayNus(200);
  41   3                              }
  42   2                      Temp--;
  43   2                      order<<=1;
  44   2                      }
  45   1       
  46   1      }
  47          
  48          //*****************************对2401写一位数据**********************
  49          void DS2401WriteBit(bit b)
  50          {
  51   1              if (b)
  52   1              {
  53   2              // Write '1' bit
  54   2              DS2401IO = 0; // Drives DQ low
  55   2              DelayNus(A);
C51 COMPILER V7.50   DS2401                                                                06/11/2008 15:16:27 PAGE 2   

  56   2              DS2401IO = 1; // Releases the bus
  57   2              DelayNus(B); // Complete the time slot and 10us recovery
  58   2              }
  59   1              else
  60   1              {
  61   2              // Write '0' bit
  62   2              DS2401IO = 0; // Drives DQ low
  63   2              DelayNus(C);
  64   2              DS2401IO = 1; // Releases the bus
  65   2              DelayNus(D);
  66   2              }
  67   1      }
  68          
  69          //*****************************对2401读一位数据**********************
  70          
  71          unsigned char  DS2401ReadBit(void)
  72          {
  73   1              unsigned char result;
  74   1              DS2401IO = 0; // Drives DQ low
  75   1              DelayNus(A);
  76   1              DS2401IO = 1; // Releases the bus
  77   1              DelayNus(E);
  78   1              result = DS2401IO ;; // Sample the bit value from the slave
  79   1              DelayNus(F); // Complete the time slot and 10us recovery
  80   1              return result;
  81   1      }
  82          //*****************************对2401写一个字节数据**********************
  83          
  84          void OWWriteByte(int value)
  85          {
  86   1              unsigned char loop;
  87   1              for (loop = 0; loop < 8; loop++)
  88   1              {
  89   2              DS2401WriteBit(value & 0x01);
  90   2              value >>= 1;
  91   2              }
  92   1      }
  93          //*****************************对2401读一个字节数据**********************
  94          
  95          unsigned char OWReadByte(void)
  96          {
  97   1              unsigned char loop, result=0;
  98   1              for (loop = 0; loop < 8; loop++)
  99   1              {
 100   2              result >>= 1;
 101   2              if (DS2401ReadBit())
 102   2              result |= 0x80;
 103   2              }
 104   1              return result;
 105   1      }
 106          
 107          //******************************读DS2401 ID 号*************************
 108          void ReadDS2401ID(void)
 109          {
 110   1              
 111   1              unsigned char Temp=0;
 112   1              while(1)
 113   1                      {
 114   2                      if(DS2401Init())
 115   2                              {
 116   3                              DS2401WorkOK = 1;//表示DS2401初始化成功
 117   3                              break;
C51 COMPILER V7.50   DS2401                                                                06/11/2008 15:16:27 PAGE 3   

 118   3                              }
 119   2                      else Temp++;
 120   2                      if(Temp>=10)
 121   2                              {
 122   3                              DS2401WorkOK=0;//初始化10次失败的化,表示DS2401工作不正常
 123   3                              break;
 124   3                              }
 125   2                      }
 126   1              if(DS2401WorkOK)
 127   1                      {
 128   2                      OWWriteByte(0x33);//发送读命令码
 129   2                      for (Temp=0;Temp<8;Temp++)
 130   2                              {
 131   3                              IDCode[Temp] = OWReadByte();//读一个字节,总共8个
 132   3                              }
 133   2                      }
 134   1       
 135   1      }
 136          
 137          
 138          
 139          
 140          
 141          
 142          
 143          
 144          
 145          
 146          
 147          
 148          
 149          
 150          
 151          
 152          
 153          
 154          
 155          
 156          
 157          
 158          
 159          
 160          
 161          
 162          
 163          
 164          
 165          
 166          
 167          
 168          
 169          
 170          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    294    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.50   DS2401                                                                06/11/2008 15:16:27 PAGE 4   

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