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

📄 one-wire.lst

📁 12864液晶显示万年历的51单片机仿真和程序 程序是C语言写的。仿真用的proteus
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   ONE_WIRE                                                              07/29/2008 20:05:46 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ONE_WIRE
OBJECT MODULE PLACED IN One-Wire.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE One-Wire.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************************/
   2          /**
   3          /** 模 块 名: -------------------One-Wire.C----------------------------------
   4          /**            -----------------DS18B20单总线模块----------------------------*/
   5          /** 功能描述: 
   6          /**
   7          /** 创 建 人: huangtiexiong    日期:2006-11-28   */
   8          /** 修 改 人:                  日期:2006-11-28   */ 
   9          /** 其他说明: 
  10          /******************************************************************************/
  11          
  12          //#include "Includes.h"                 //文件包含
  13          #include                <reg52.h>
  14          #include    <intrins.h>
  15          #include    <string.h>
  16          #include        "One-Wire.h"
  17          
  18          #define int8u unsigned char
  19          
  20          /*************************************************
  21              模块级变量申明                 
  22          *************************************************/
  23          /* void         OneWire_Rst(void);
  24           void   OneWire_Init(void);
  25           void   OneWire_WriteByte(int8u cmd);
  26           int8u  OneWire_ReadByte(void);
  27           void   OneWire_Idle(void);       */
  28          
  29           void Delay_Xus(int8u x)                //x取值1~255;
  30          {
  31   1              while(--x);
  32   1      //      int8u i;
  33   1      //      x /= 8;
  34   1      //      for(i=0;i<x;i++);
  35   1              }
  36          
  37           void Delay_Xms(int8u x)                //x取值1~255;
  38          {
  39   1              int8u i,j;
  40   1              for(i=0;i<x;i++)
  41   1              for(j=0;j<200;j++)
  42   1              {
  43   2                      _nop_();
  44   2                      _nop_();
  45   2              }
  46   1      }
  47          
  48          /*************************************************
  49              子函数定义                  
  50          *************************************************/
  51          
  52          /*******************************************************************************
  53          *** 函 数 名:  void OneWire_Init(void)
  54          *** 功能描述: 
  55          *** 全局变量: 
C51 COMPILER V8.08   ONE_WIRE                                                              07/29/2008 20:05:46 PAGE 2   

  56          *** 输          入: NO !
  57          *** 输          出: NO !
  58          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  59          *** 修 改 人:                                                                          日期:2006-11-28
  60          *** 函数说明: 单总线数据传输初始化;
  61          /******************************************************************************/
  62           void OneWire_Init(void)
  63          {
  64   1              DQ = 1;
  65   1              _nop_();;
  66   1              DQ = 0;                                         //拉低数据线,准备Reset OneWire Bus;
  67   1              Delay_Xus(125);         //延时510us,Reset One-Wire Bus.
  68   1              Delay_Xus(125);
  69   1              
  70   1              DQ = 1;                                         //提升数据线;
  71   1              Delay_Xus(15);          //延时35us;
  72   1              
  73   1              while(DQ)                                       //等待Slave 器件Ack 信号;
  74   1              {
  75   2                      _nop_();;
  76   2                      }
  77   1              Delay_Xus(60);          //延时125us;   
  78   1              DQ = 1;                                         //提升数据线,准备数据传输;
  79   1              }
  80          /*******************************************************************************
  81          *** 函 数 名:  void OneWire_Rst(void)
  82          *** 功能描述: 
  83          *** 全局变量: No !
  84          *** 输          入: NO !
  85          *** 输          出: NO !
  86          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  87          *** 修 改 人:                                                                          日期:2006-11-28
  88          *** 函数说明: 单总线Reset pulse;
  89          /******************************************************************************/
  90           void OneWire_Rst(void)
  91          {
  92   1              DQ = 0;                                         //拉低数据线,准备Reset OneWire Bus;
  93   1              Delay_Xus(125);         //延时511us,Reset One-Wire Bus.
  94   1              DQ = 0;
  95   1              Delay_Xus(125);
  96   1              }
  97          /*******************************************************************************
  98          *** 函 数 名:  void OneWire_WriteByte(int8u cmd)
  99          *** 功能描述: 写一个字节;
 100          *** 全局变量: NO !
 101          *** 输          入: cmd:8bit;
 102          *** 输          出: NO !
 103          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 104          *** 修 改 人:                                                                          日期:2006-11-28
 105          *** 函数说明: cmd主要有Rom操作指令和E2Ram操作指令两种;
 106          /******************************************************************************/
 107           void OneWire_WriteByte(int8u cmd)
 108          {
 109   1              int8u i;
 110   1              for(i=0;i<8;i++)
 111   1              {
 112   2                      if(cmd & 0x01)          //低位在前;
 113   2                              {
 114   3                                      DQ = 0;                         //结束Recovery time;
 115   3                                      _nop_();;
 116   3                                      _nop_();;
 117   3                                      _nop_();;
C51 COMPILER V8.08   ONE_WIRE                                                              07/29/2008 20:05:46 PAGE 3   

 118   3                                      DQ = 1;                         //发送数据;
 119   3                                      }
 120   2                      else
 121   2                              {
 122   3                                      DQ = 0;                         //结束Rec time;
 123   3                                      _nop_();;
 124   3                                      _nop_();;
 125   3                                      _nop_();;               
 126   3                                      //DQ = 0;                       //发送数据;
 127   3                                      }
 128   2                      Delay_Xus(30);          //等待Slave Device采样;
 129   2                      DQ = 1;                                         //Recovery;
 130   2                      _nop_();;                                               //Recovery Time Start;
 131   2                      cmd >>= 1;
 132   2                      }
 133   1              }
 134          /*******************************************************************************
 135          *** 函 数 名:  int8u OneWire_ReadByte(void)
 136          *** 功能描述: 读取一个字节;
 137          *** 全局变量: NO !
 138          *** 输          入: NO !
 139          *** 输          出: 8bit data;
 140          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 141          *** 修 改 人:                                                                          日期:2006-11-28
 142          *** 函数说明: 读之前必须首先写1;
 143          /******************************************************************************/
 144           int8u OneWire_ReadByte(void)
 145          {
 146   1              int8u i;
 147   1              int8u tmp = 0;

⌨️ 快捷键说明

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