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

📄 ds18b20.lst

📁 单片机接口技术实用子程序配套源代码
💻 LST
字号:
C51 COMPILER V7.06   DS18B20                                                               05/04/2005 22:51:36 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------函数声明,变量定义--------------------------------------------------------
   2          #include <reg51.h>
   3          sbit DQ=P1^0;                          // 将p1.0口模拟时钟输出
   4          #define jump_ROM 0xCC                   //跳过ROM命令
   5          #define start    0x44                   //启动转换命令
   6          #define read_EEROM 0xBE                 //读存储器命令
   7          unsigned char TMPH,TMPL;                //温度值
   8          //--------------------------------------------------------------------------------------------------
   9          // 函数名称: delay
  10          // 入口参数: N
  11          // 函数功能:延时子程序,实现(16*N+24)us的延时 
  12          // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
  13          //--------------------------------------------------------------------------------------------------
  14            void delay(unsigned  int N)  
  15            {
  16   1        int i; 
  17   1        for(i=0;i<N;i++);
  18   1        }
  19          //--------------------------------------------------------------------------------------------------
  20          // 函数名称: Reset
  21          // 入口参数: 无
  22          // 返回deceive_ready
  23          // 函数功能:复位 
  24          //--------------------------------------------------------------------------------------------------   
  25          unsigned char Reset(void) 
  26          {
  27   1         unsigned  char deceive_ready;
  28   1         DQ=0;                               //拉低DQ线  
  29   1         delay(29);                          //延时至少480us~960us
  30   1         DQ=1;                               //将DQ线设置位逻辑高    
  31   1         delay(3);                           //延时等待deceive_ready响应 
  32   1         deceive_ready=DQ;                   //采样deceive_ready信号
  33   1         delay(25);                          //等待时序结束
  34   1         return(deceive_ready);              //有deceive_ready信号时返回0,否则返回1
  35   1      }
  36          //--------------------------------------------------------------------------------------------------
  37          // 函数名称:read_bit
  38          // 入口参数: 无
  39          // 返回接收的数据
  40          // 函数功能:读一个bit子程序 
  41          //--------------------------------------------------------------------------------------------------
  42          unsigned char read_bit(void)
  43          {
  44   1      unsigned char i;
  45   1      DQ=0;                                 //拉低DQ线开始时序
  46   1      DQ=1;                                 //升高DQ线                        
  47   1      for(i=0;i<3;i++);                                           //延时至时序开始15us
  48   1      return(DQ);                           //返回DQ值
  49   1      }
  50          //--------------------------------------------------------------------------------------------------
  51          // 函数名称: write_bit
  52          // 入口参数: bitval
  53          // 函数功能:写一个bit子程序 
  54          //--------------------------------------------------------------------------------------------------
  55          void write_bit(unsigned char bitval)
C51 COMPILER V7.06   DS18B20                                                               05/04/2005 22:51:36 PAGE 2   

  56            {
  57   1          DQ=0;                            //拉低DQ线开始时序
  58   1          if(bitval==1)
  59   1          DQ=1;                             //如果写逻辑为高
  60   1          delay(5);                         //延时  
  61   1          DQ=1;                             //升高DQ线 
  62   1      }
  63          //--------------------------------------------------------------------------------------------------
  64          // 函数名称: write_byte
  65          // 入口参数: val
  66          // 函数功能:写一个byte子程序 
  67          //--------------------------------------------------------------------------------------------------
  68          void write_byte(unsigned char val)
  69          {
  70   1      unsigned char i,temp;
  71   1      for(i=0;i<8;i++)
  72   1      {
  73   2      temp=val>>i;                         //将val位右移i位赋值给比temp
  74   2      temp=temp&0x01;                      //取temp最低位
  75   2      write_bit(temp);
  76   2      delay(5);                           //延时至时序结束
  77   2      }
  78   1      }
  79          //--------------------------------------------------------------------------------------------------
  80          // 函数名称: read_byte
  81          // 返回接收的数据 value
  82          // 函数功能:读一个byte子程序 
  83          //--------------------------------------------------------------------------------------------------
  84          unsigned char read_byte(void)
  85          {unsigned char i,m,receive_data;
  86   1         m=1;receive_data=0;                          //初始化
  87   1         for(i=0;i<8;i++)
  88   1        {
  89   2        if(read_bit()) 
  90   2         {
  91   3         receive_data=receive_data+(m<<i);
  92   3         }                                            //每读一位数据据,左移一位  
  93   2        delay(6);                                    //延时至时序结束 
  94   2      }  
  95   1      return(receive_data);                           //返回value
  96   1      }
  97          //--------------------------------------------------------------------------------------------------
  98          // 函数名称: main
  99          // 函数功能: 主函数
 100          //--------------------------------------------------------------------------------------------------
 101          void main()
 102               {
 103   1           Reset();
 104   1           write_byte(jump_ROM);     //发跳过ROM命令
 105   1               write_byte(start);        //发启动转换命令
 106   1               Reset();
 107   1           write_byte(jump_ROM);     //发跳过ROM命令
 108   1           write_byte(read_EEROM);     //发跳过ROM命令
 109   1           TMPL=read_byte();           //读低8位温度值
 110   1               TMPH=read_byte();           //读高8位温度值
 111   1            }
 112          
 113              


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    189    ----
C51 COMPILER V7.06   DS18B20                                                               05/04/2005 22:51:36 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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