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

📄 ds1802.lst

📁 基于51单片机实现UART通信 SPI通信 和IIC通信
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DS1802                                                                06/01/2008 12:34:31 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS1802
OBJECT MODULE PLACED IN DS1802.obj
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE C_H\DS1802.C BROWSE DEBUG OBJECTEXTEND PRINT(.\DS1802.ls
                    -t) OBJECT(DS1802.obj)

line level    source

   1          /*******************************DS18B20单总线模块*****************************/
   2          
   3          #include "Includes.h"                   //文件包含 
   4          /*************************************************
   5              模块级变量申明                 
   6          *************************************************/
   7          static    void          OneWire_Rst(void);
   8          static    void          OneWire_Init(void);
   9          static    void          OneWire_WriteByte(unsigned char cmd);
  10          static  unsigned char   OneWire_ReadByte(void);
  11          static    void          OneWire_Idle(void);
  12          /*************************************************
  13              子函数定义                  
  14          *************************************************/
  15          
  16          /*******************************************************************************
  17          *** 函 数 名: static void OneWire_Init(void)
  18          *** 功能描述: 
  19          *** 全局变量: 
  20          *** 输          入: NO !
  21          *** 输          出: NO !
  22          *** 创 建 人:huangtiexiong                       
  23          *** 修 改 人:                                                                          
  24          *** 函数说明: 单总线数据传输初始化;
  25          /******************************************************************************/
  26          static void OneWire_Init(void)
  27           {
  28   1              DQ = 1;
  29   1              NOP();
  30   1              DQ = 0;                                         //拉低数据线,准备Reset OneWire Bus
  31   1              Delay_Xus(125);         //延时510us,Reset One-Wire Bus.
  32   1              Delay_Xus(125);
  33   1              
  34   1              DQ = 1;                                         //提升数据线
  35   1              Delay_Xus(15);          //延时35us
  36   1              
  37   1              while(DQ) 
  38   1                 {                                                //等待Slave 器件Ack 信号
  39   2                  NOP();
  40   2                 }
  41   1              Delay_Xus(60);          //延时125us     
  42   1              DQ = 1;                                         //提升数据线,准备数据传输
  43   1       }
  44          /*******************************************************************************
  45          *** 函 数 名: static void OneWire_Rst(void)
  46          *** 功能描述: 
  47          *** 全局变量: No !
  48          *** 输          入: NO !
  49          *** 输          出: NO !
  50          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  51          *** 修 改 人:                                                                          日期:2006-11-28
  52          *** 函数说明: 单总线Reset pulse;
  53          /******************************************************************************/
  54          static void OneWire_Rst(void)
C51 COMPILER V8.02   DS1802                                                                06/01/2008 12:34:31 PAGE 2   

  55          {
  56   1              DQ = 0;                                         //拉低数据线,准备Reset OneWire Bus;
  57   1              Delay_Xus(125);         //延时511us,Reset One-Wire Bus.
  58   1              DQ = 0;
  59   1              Delay_Xus(125);
  60   1              }
  61          /*******************************************************************************
  62          *** 函 数 名: static void OneWire_WriteByte(unsigned char cmd)
  63          *** 功能描述: 写一个字节;
  64          *** 全局变量: NO !
  65          *** 输          入: cmd:8bit;
  66          *** 输          出: NO !
  67          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  68          *** 修 改 人:                                                                          日期:2006-11-28
  69          *** 函数说明: cmd主要有Rom操作指令和E2Ram操作指令两种;
  70          /******************************************************************************/
  71          static void OneWire_WriteByte(unsigned char cmd)
  72          {
  73   1              unsigned char i;
  74   1              for(i=0;i<8;i++)
  75   1              {
  76   2                      if(cmd & 0x01)          //低位在前;
  77   2                              {
  78   3                                      DQ = 0;                         //结束Recovery time;
  79   3                                      NOP();
  80   3                                      NOP();
  81   3                                      NOP();
  82   3                                      DQ = 1;                         //发送数据;
  83   3                                      }
  84   2                      else
  85   2                              {
  86   3                                      DQ = 0;                         //结束Rec time;
  87   3                                      NOP();
  88   3                                      NOP();
  89   3                                      NOP();          
  90   3                                      //DQ = 0;                       //发送数据;
  91   3                                      }
  92   2                      Delay_Xus(30);          //等待Slave Device采样;
  93   2                      DQ = 1;                                         //Recovery;
  94   2                      NOP();                                          //Recovery Time Start;
  95   2                      cmd >>= 1;
  96   2                      }
  97   1              }
  98          /*******************************************************************************
  99          *** 函 数 名: static unsigned char OneWire_ReadByte(void)
 100          *** 功能描述: 读取一个字节;
 101          *** 全局变量: NO !
 102          *** 输          入: NO !
 103          *** 输          出: 8bit data;
 104          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 105          *** 修 改 人:                                                                          日期:2006-11-28
 106          *** 函数说明: 读之前必须首先写1;
 107          /******************************************************************************/
 108          static unsigned char OneWire_ReadByte(void)
 109          {
 110   1              unsigned char i;
 111   1              unsigned char tmp = 0;
 112   1              DQ = 1;                                                 //准备读;
 113   1              NOP();
 114   1              for(i=0;i<8;i++)
 115   1              {
 116   2                      tmp >>= 1;                              //低位先发;
C51 COMPILER V8.02   DS1802                                                                06/01/2008 12:34:31 PAGE 3   

 117   2                      DQ = 0;                                         //Read init;
 118   2                      _nop_();                                        //2ms;
 119   2                      DQ = 1;                                         //必须写1,否则读出来的将是不预期的数据;
 120   2                      Delay_Xus(2);                   //延时9us;
 121   2                      _nop_();
 122   2                      if(DQ)                                          //在12us处读取数据;
 123   2                              tmp |= 0x80;
 124   2                      Delay_Xus(30);          //延时55us;
 125   2                      DQ = 1;                                         //恢复One Wire Bus;
 126   2                      NOP();
 127   2                      }
 128   1              return tmp;     
 129   1              }
 130          /*******************************************************************************
 131          *** 函 数 名: static void OneWire_Idle(void)
 132          *** 功能描述: 总线空闲模式;
 133          *** 全局变量: NO !
 134          *** 输          入: NO !

⌨️ 快捷键说明

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