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

📄 ds18b20.lst

📁 自己写的测试程序,调试已通过,可以直接使用, 而且有的还有详细的注释.红外采集器软件
💻 LST
字号:
C51 COMPILER V7.08   DS18B20                                                               06/13/2007 16:48:13 PAGE 1   


C51 COMPILER V7.08, 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<w78e58b.h>
   2          #include <intrins.h>
   3          
   4          sbit dq18b20=P1^1;
   5          sbit dq18b20_find=P1^0;
   6          
   7          /************* delay time  ******************************/  
   8          void ds18b20_delay(char t)
   9          {
  10   1       for(;t>0;t--)
  11   1        {}
  12   1       }
  13          
  14          /************** wait *****************************/
  15          bit ds18b20_wait(void)
  16           {
  17   1       unsigned char i;
  18   1        bit x;
  19   1        x=0;  
  20   1        for(i=0;i<100;i++)
  21   1        {
  22   2         if(~dq18b20)
  23   2           { 
  24   3            if(dq18b20)
  25   3                  {x=1;return x;}
  26   3                 }    }  
  27   1          return x;        
  28   1                
  29   1                }  
  30          
  31          /**************  reset DS18B20  ************************/
  32          void ds18b20_reset(void)       // reset DS18b20
  33           {
  34   1       dq18b20_find=0;
  35   1       dq18b20=0;
  36   1       ds18b20_delay(50);
  37   1       dq18b20=1;
  38   1       dq18b20_find=1;
  39   1       }
  40          /***************  wait responsion ***********************/
  41          
  42          /***************  read a bit data ******************************/
  43          bit ds18b20_readbit(void)
  44           { 
  45   1        bit x;
  46   1        dq18b20=0;
  47   1                                      _nop_();
  48   1                                      _nop_();
  49   1                                     _nop_();
  50   1                                      _nop_();
  51   1        dq18b20=1;
  52   1        x=dq18b20;
  53   1      return(x);
  54   1       }
  55          /**************** read a byte data *****************************/
C51 COMPILER V7.08   DS18B20                                                               06/13/2007 16:48:13 PAGE 2   

  56           unsigned char ds18b20_readbyte(void)
  57           {
  58   1         unsigned char i,dat,x;
  59   1         dat=0x00;
  60   1        for(i=0;i<8;i++)
  61   1        { 
  62   2          x=ds18b20_readbit();                                             
  63   2          dat=(x<<7)|(dat>>1);              
  64   2          }
  65   1         return(dat);
  66   1       }
  67          /*******************  write a byte data *******************************/
  68          void ds18b20_write(unsigned char dat)
  69           {
  70   1         unsigned char i,x;
  71   1         for(i=0;i<8;i++)
  72   1          {
  73   2           x=dat&1;
  74   2           dat>>=1;
  75   2           if(x==1)
  76   2            {  
  77   3             dq18b20=0;
  78   3             ds18b20_delay(0);
  79   3                                                 _nop_();
  80   3                                               _nop_();
  81   3                                               _nop_();
  82   3                                               _nop_();
  83   3                                                _nop_();
  84   3                                               _nop_();
  85   3             dq18b20=1;
  86   3           }
  87   2         else {
  88   3                dq18b20=0;
  89   3                ds18b20_delay(5);
  90   3                dq18b20=1;
  91   3                }
  92   2           }
  93   1        }
  94          /************  starting DS18B20  ********************/
  95          void ds18b20_start(void)
  96          {   EA=0;
  97   1           ds18b20_reset();
  98   1           ds18b20_wait();
  99   1           ds18b20_write(0xcc);             
 100   1           ds18b20_write(0x44);                                 
 101   1         EA=1;                            
 102   1        }
 103          
 104           /*************  match rom *****************************/
 105          short int match_temperature(unsigned char n[8])
 106           {
 107   1         
 108   1         unsigned char i,low,high;
 109   1         unsigned char *p;
 110   1         short int x;
 111   1        
 112   1        EA=0; p=n;
 113   1         ds18b20_reset();
 114   1         ds18b20_wait();                     
 115   1         ds18b20_write(0x55);
 116   1         for(i=0;i<8;i++)
 117   1          {
C51 COMPILER V7.08   DS18B20                                                               06/13/2007 16:48:13 PAGE 3   

 118   2                ds18b20_write(*p);
 119   2                p++;
 120   2                                                
 121   2                }
 122   1           ds18b20_write(0xbe);               
 123   1           ds18b20_delay(3);
 124   1          low=ds18b20_readbyte();
 125   1          high=ds18b20_readbyte();
 126   1          x=high&0xff;
 127   1              x<<=8;
 128   1              x+=low;
 129   1         EA=1;
 130   1              return x;
 131   1         
 132   1      }  
 133             
 134             bit ds18b20_readbit_find(void)
 135           { 
 136   1        bit x;
 137   1        dq18b20_find=0;
 138   1        ds18b20_delay(1);                     
 139   1        dq18b20_find=1;
 140   1        x=dq18b20_find;
 141   1      return(x);
 142   1       }  
 143                
 144             /**************** read a byte data *****************************/
 145           unsigned char ds18b20_readbyte_find(void)
 146           {
 147   1         unsigned char i,dat,x;
 148   1         dat=0x00;
 149   1        for(i=0;i<8;i++)
 150   1        { 
 151   2          x=ds18b20_readbit_find();                 
 152   2          ds18b20_delay(1);
 153   2          dat=(x<<7)|(dat>>1);
 154   2          }
 155   1         return(dat);
 156   1       }
 157          
 158          
 159          /************** wait *****************************/
 160          bit ds18b20_wait_find(void)
 161           {
 162   1       unsigned char i;
 163   1        bit x;
 164   1       x=0;  
 165   1        for(i=0;i<100;i++)
 166   1        {
 167   2         if(~dq18b20_find)
 168   2           { 
 169   3                ds18b20_delay(0);
 170   3            if(dq18b20_find)
 171   3                  {x=1;return x;}
 172   3                 }    }  
 173   1          return x;         
 174   1         
 175   1                
 176   1                }
 177          
 178          /*******************  dq18b20_find ***************************/
 179          void ds18b20_write_find(unsigned char dat)
C51 COMPILER V7.08   DS18B20                                                               06/13/2007 16:48:13 PAGE 4   

 180           {  
 181   1         unsigned char i,x;
 182   1         for(i=0;i<8;i++)
 183   1          {
 184   2           x=dat&1;
 185   2           dat>>=1;
 186   2           if(x==1)
 187   2            {  
 188   3             dq18b20_find=0;
 189   3              ds18b20_delay(0);
 190   3             dq18b20_find=1;
 191   3           }
 192   2         else {
 193   3                dq18b20_find=0;
 194   3                ds18b20_delay(5);
 195   3                dq18b20_find=1;
 196   3                }
 197   2           }
 198   1        }
 199          /***********  read number   ********************************/
 200          void ds18b20_number(unsigned char xxxxx[8])
 201          {
 202   1       unsigned char *p;
 203   1       unsigned char i; 
 204   1         EA=0;
 205   1        p=xxxxx;
 206   1       
 207   1        ds18b20_reset();
 208   1        ds18b20_wait_find();              
 209   1        ds18b20_write_find(0x33);
 210   1        for(i=0;i<8;i++)
 211   1        {
 212   2          *p=ds18b20_readbyte_find();
 213   2           p++;
 214   2           
 215   2               }
 216   1         EA=1;
 217   1       }
 218          
 219          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    378    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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