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

📄 ds1820.lst

📁 c8051f020测温程序
💻 LST
字号:
C51 COMPILER V7.50   DS1820                                                                05/11/2005 23:48:28 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DS1820
OBJECT MODULE PLACED IN Ds1820.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE Ds1820.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "c8051F020.h"
   2          #include <intrins.h>
   3          
   4          /*
   5                  数字温度传感器DS18b20试验
   6          
   7                  试验准备:用连接线将JH端子的DS12B80位与CN7或CN8的P37口相连
   8                  运行此程序,温度值将在数码管上显示.用手触摸T1芯片(DS18B20)
   9                  观察温度变化.
  10          
  11          */
  12          
  13          #define DataPortDS1820 P37
  14          
  15          void Delay1us(unsigned char us)
  16          {
  17   1              while (us)
  18   1              {
  19   2                _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  20   2                --us;
  21   2              }
  22   1      /*
  23   1         TCON  &= ~0xc0;              // STOP Timer1 and clear overflow flag
  24   1         TMOD  &= ~0xf0;              // configure Timer1 to 16-bit mode
  25   1         TMOD  |=  0x10;
  26   1         CKCON |=  0x10;              // Timer1 counts SYSCLKs
  27   1      
  28   1         TR1 = 0;                     // STOP Timer1
  29   1         TH1 = (-SYSCLK/us) >> 8;             // set Timer1 to overflow in us
  30   1         TL1 = -SYSCLK/us;
  31   1         TR1 = 1;                             // START Timer1
  32   1         while (TF1 == 0);            // wait for overflow
  33   1         TF1 = 0;                     // clear overflow indicator
  34   1      */
  35   1      }
  36          
  37          
  38          
  39          void Delay15us(void)  
  40          {
  41   1              Delay1us(15);
  42   1      }
  43          
  44          
  45          void Delay10us(void)
  46          {       
  47   1              Delay1us(10);
  48   1      }
  49          
  50          bit RstDS1820(void)  //返回0-有设备连接1-无设备连接
  51          {
  52   1      unsigned char i;
  53   1      bit RstFlag;
  54   1              RstFlag=1;      
  55   1              DataPortDS1820=0;
C51 COMPILER V7.50   DS1820                                                                05/11/2005 23:48:28 PAGE 2   

  56   1              for (i=0;i<100/*40*/;i++)       //480us
  57   1                      Delay15us(); 
  58   1              DataPortDS1820=1;
  59   1              for (i=0;i<4;i++)       //15us-60us
  60   1              {
  61   2                      Delay15us();
  62   2              }
  63   1              for (i=0;i<16;i++)      //60us-240us
  64   1              {
  65   2                      Delay15us();
  66   2                      if (DataPortDS1820==0) RstFlag=0;
  67   2              }
  68   1              for (i=0;i<16;i++)      //240us
  69   1              {
  70   2                      Delay15us();
  71   2              }
  72   1              return RstFlag; 
  73   1      }
  74          
  75          void WriteDS1820(unsigned char ch)
  76          {
  77   1      unsigned char i;
  78   1              DataPortDS1820=1;
  79   1              Delay1us(1);
  80   1              for (i=0;i<8;i++)
  81   1              {
  82   2                      EA=0;
  83   2                      DataPortDS1820=0;
  84   2                      Delay15us();
  85   2                      DataPortDS1820=ch&0x1;
  86   2                      EA=1;
  87   2                      Delay15us();Delay15us();Delay15us();
  88   2                      DataPortDS1820=1;
  89   2                      ch=ch>>1;
  90   2                      Delay1us(1);
  91   2              }       
  92   1      }
  93          
  94          unsigned char ReadDS1820(void)
  95          {
  96   1      unsigned char i,ch;
  97   1              ch=0;
  98   1              DataPortDS1820=1;
  99   1              Delay1us(1);
 100   1              for (i=0;i<8;i++)
 101   1              {
 102   2                      EA=0;
 103   2                      DataPortDS1820=0;
 104   2                      Delay10us();
 105   2                      DataPortDS1820=1;
 106   2                      Delay1us(2);
 107   2                      ch=ch>>1;
 108   2                      if (DataPortDS1820==1)
 109   2                      {
 110   3                              ch=ch+0x80;
 111   3                      }
 112   2                      EA=1;
 113   2                      Delay15us();Delay15us();Delay15us();
 114   2              }       
 115   1              return ch;
 116   1      }
 117          /*
C51 COMPILER V7.50   DS1820                                                                05/11/2005 23:48:28 PAGE 3   

 118          void GetROMCode(unsigned char idata *ptr)
 119          {
 120          unsigned char i;
 121                  RstDS1820();
 122                  WriteDS1820(0x33); //28h,1ah,2fh,0bh,00h,00h,00h,89h,
 123                  for (i=0;i<8;i++)
 124                  {
 125                          *(ptr+i)=ReadDS1820();
 126                  }
 127          }       
 128          void MatchROMCode(unsigned char idata *ptr)
 129          {
 130          unsigned char i;
 131                  RstDS1820();
 132                  WriteDS1820(0x55); 
 133                  for (i=0;i<8;i++)
 134                  {
 135                          WriteDS1820(*(ptr+i));
 136                  }
 137          }
 138          
 139          bit GetPowerType(void)
 140          {
 141                  WriteDS1820(0xb4); 
 142                  EA=0;
 143                  DataPortDS1820=1;
 144                  Delay10us();
 145                  if (DataPortDS1820)
 146                  {
 147                          EA=1;return TRUE;
 148                  }
 149                  else
 150                  {
 151                          EA=1;return FALSE;
 152                  }
 153          }
 154          void WriteConfig(unsigned char Config)
 155          {
 156                  WriteDS1820(0x4e); 
 157                  WriteDS1820(0x7f); 
 158                  WriteDS1820(0x0); 
 159                  WriteDS1820(Config); 
 160          }
 161          unsigned char GetConfig(void)
 162          {
 163                  WriteDS1820(0xBE); 
 164                  ReadDS1820();
 165                  ReadDS1820();
 166                  ReadDS1820();
 167                  ReadDS1820();
 168                  return ReadDS1820();
 169          }
 170          */
 171          
 172          void SkipROMCode(void)
 173          {
 174   1              RstDS1820();
 175   1              WriteDS1820(0xcc); 
 176   1      }
 177          void StartADC(void)
 178          {
 179   1      
C51 COMPILER V7.50   DS1820                                                                05/11/2005 23:48:28 PAGE 4   

 180   1              RstDS1820();            //复位
 181   1              WriteDS1820(0xcc);  //广播
 182   1              WriteDS1820(0x44);      //启动AD转换 12bit700ms
 183   1      }
 184          
 185          unsigned int GetTempValue(void)
 186          {
 187   1      unsigned char i,j;
 188   1      unsigned int T;
 189   1              SkipROMCode();
 190   1              WriteDS1820(0xBE); 
 191   1              i=ReadDS1820();
 192   1              j=ReadDS1820();
 193   1              StartADC();
 194   1              T=i+j*256;
 195   1              if (T==0xffff) return 0xffff;
 196   1              if (T>0x8000) 
 197   1              {
 198   2                      T=-T;
 199   2                      return (0x8000+T*5/8);
 200   2              }
 201   1              else
 202   1                      return (T*5/8);
 203   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    290    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -