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

📄 ds18b20.lst

📁 使用C8051F实现脉搏及血氧饱和度测量 包括均值滤波
💻 LST
字号:
C51 COMPILER V8.02   DS18B20                                                               12/05/2007 10:38:51 PAGE 1   


C51 COMPILER V8.02, 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 <c8051f020.h>                    
   2          #include <intrins.h>
   3          sbit DataPortDS1820 = P3^6;   
   4          void Delay1us(unsigned char us)  //延时
   5          {
   6   1              while (us)
   7   1              {
   8   2                      _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
   9   2                      --us;
  10   2              }
  11   1      }
  12          void Delay15us(void)  
  13          {
  14   1              Delay1us(15);                  //延时15秒
  15   1      }
  16          void Delay10us(void)
  17          {       
  18   1              Delay1us(10);
  19   1      }
  20          bit RstDS1820(void)             //返回0-有设备连接1-无设备连接
  21          {
  22   1              unsigned char i;
  23   1              bit RstFlag;
  24   1              RstFlag=1;      
  25   1              DataPortDS1820=0;
  26   1              for (i=0;i<40;i++)              //480us 延时
  27   1                      Delay15us(); 
  28   1              DataPortDS1820=1;
  29   1              for(i=0;i<4;i++)                        //15us-60us 延时
  30   1              {
  31   2                      Delay15us();
  32   2              }
  33   1              for (i=0;i<16;i++)                      //60us-240us 延时
  34   1              {
  35   2                      Delay15us();
  36   2                      if (DataPortDS1820==0) RstFlag=0;
  37   2              }
  38   1              for (i=0;i<16;i++)                      //240us
  39   1              {
  40   2                      Delay15us();
  41   2              }
  42   1              return RstFlag; 
  43   1      }
  44          void WriteDS1820(unsigned char ch)
  45          {
  46   1      unsigned char i;
  47   1              DataPortDS1820=1;
  48   1              Delay1us(1);
  49   1              for (i=0;i<8;i++)
  50   1              {
  51   2                      EA=0;
  52   2                      DataPortDS1820=0;
  53   2                      Delay15us();
  54   2                      DataPortDS1820=ch&0x1;
  55   2                      EA=1;
C51 COMPILER V8.02   DS18B20                                                               12/05/2007 10:38:51 PAGE 2   

  56   2                      Delay15us();Delay15us();Delay15us();
  57   2                      DataPortDS1820=1;
  58   2                      ch=ch>>1;
  59   2                      Delay1us(1);
  60   2              }
  61   1      }
  62          unsigned char ReadDS1820(void)
  63          {
  64   1              unsigned char i,ch;
  65   1              ch=0;
  66   1              DataPortDS1820=1;
  67   1              Delay1us(1);
  68   1              for (i=0;i<8;i++)
  69   1              {
  70   2                      EA=0;
  71   2                      DataPortDS1820=0;
  72   2                      Delay10us();
  73   2                      DataPortDS1820=1;
  74   2                      Delay1us(2);
  75   2                      ch=ch>>1;
  76   2                      if (DataPortDS1820==1)
  77   2                      {
  78   3                              ch=ch+0x80;
  79   3                      }
  80   2                      EA=1;
  81   2                      Delay15us();Delay15us();Delay15us();
  82   2              }       
  83   1              return ch;
  84   1      }
  85          void SkipROMCode(void)       //主机发跳过读序列号的操作命令:0xcc
  86          {
  87   1              RstDS1820();
  88   1              WriteDS1820(0xcc);
  89   1      }
  90          void StartADC(void)
  91          {
  92   1              RstDS1820();                    //复位
  93   1              WriteDS1820(0xcc);              //广播
  94   1              WriteDS1820(0x44);              //启动温度转换转换 12bit700ms
  95   1      }
  96          unsigned int GetTempValue(void)//读取温度值的程序
  97          {
  98   1              unsigned char i,j;        
  99   1              unsigned int T;
 100   1              SkipROMCode();
 101   1              WriteDS1820(0xBE);  //发布读取温度值的命令(0xBE)
 102   1              i=ReadDS1820();
 103   1              j=ReadDS1820();
 104   1              StartADC();
 105   1              T=i+j*256;
 106   1              return T;
 107   1      }
 108          
 109                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    221    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
C51 COMPILER V8.02   DS18B20                                                               12/05/2007 10:38:51 PAGE 3   

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