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

📄 iic_master.lst

📁 51单片机相关驱动程序 51单片机最小系统测试程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   IIC_MASTER                                                            03/31/2006 18:35:32 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE IIC_MASTER
OBJECT MODULE PLACED IN iic_master.OBJ
COMPILER INVOKED BY: E:\电子应用软件\keil7\C51\BIN\C51.EXE iic_master.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************************************************
   2          **                                             Small RTOS(51)
   3          **                                   The Real-Time Kernel(For Keil c51)
   4          **
   5          **                                  (c) Copyright 2002-2003, chenmingji
   6          **                                           All Rights Reserved
   7          **
   8          **                                                  V1.12.1
   9          **
  10          **
  11          **--------------文件信息--------------------------------------------------------------------------------
  12          **文   件   名: IIC_Master.c
  13          **创   建   人: 陈明计
  14          **最后修改日期:  2002年12月3日
  15          **描        述: Small RTOS IIC总线主器件驱动程序源文件,也可以在不使用
  16          **              Small RTOS的情况下使用(标准51CPU12MHz时100KHz IIc总线
  17          **              仿真)
  18          **--------------历史版本信息----------------------------------------------------------------------------
  19          ** 创建人: 陈明计
  20          ** 版  本: V1.00
  21          ** 日 期: 2003年2月28日
  22          ** 描 述: 原始版本
  23          **
  24          **------------------------------------------------------------------------------------------------------
  25          ** 修改人:
  26          ** 版  本:
  27          ** 日 期:
  28          ** 描 述:
  29          **
  30          **--------------当前版本修订------------------------------------------------------------------------------
  31          ** 修改人: 
  32          ** 日 期:
  33          ** 描 述:
  34          **
  35          **------------------------------------------------------------------------------------------------------
  36          ********************************************************************************************************/
  37           #include <IIC.H>
  38          
  39          /*********************************************************************************************************
  40          ** 函数名称: IICRead
  41          ** 功能描述: 从IIC总线读取数据
  42          ** 输 入: Ret:存储读取的数据
  43          **         Addr:IIC从器件地址
  44          **         Nbyte:读取的字节数目
  45          ** 输 出: TRUE:成功
  46          **         FALSE:失败
  47          ** 全局变量: 无
  48          ** 调用模块: 无
  49          ********************************************************************************************************/
  50             uint8 IICRead(uint8 *Ret,uint8 Addr,uint8 NByte)
  51          {
  52   1          uint8 i,k;
  53   1          // Addr = Addr & 0xfe;
  54   1          Addr = Addr | 0x01;
  55   1          if (IICStart() == FALSE)
C51 COMPILER V7.08   IIC_MASTER                                                            03/31/2006 18:35:32 PAGE 2   

  56   1          {
  57   2              return FALSE;
  58   2          }
  59   1              
  60   1              if(IICSend(0xa0) == FALSE)
  61   1          {
  62   2              return FALSE;
  63   2               }
  64   1              if(IICSend(0x00) == FALSE)
  65   1          {
  66   2              return FALSE;
  67   2              }
  68   1              /*
  69   1              -----------------------------------
  70   1              */
  71   1          if(IICSend(Addr) == FALSE)
  72   1          {
  73   2              return FALSE;
  74   2          }
  75   1              /*
  76   1              -------------------------------------
  77   1              
  78   1              if(IICSend(0x00)==FALSE)
  79   1              {
  80   1                      return FALSE;
  81   1              }
  82   1              /*
  83   1              -------------------------------------
  84   1              */
  85   1          i = NByte - 1;
  86   1          if (i != 0)
  87   1          {
  88   2              do
  89   2              {
  90   3                              k=IICReceive();
  91   3                  *Ret++ =k;// IICReceive();
  92   3                  IIC_ACK();
  93   3              } while (--i != 0);
  94   2          }
  95   1          *Ret = IICReceive();
  96   1          IIC_NO_ACK();
  97   1          IICStop();
  98   1          return TRUE;    
  99   1      }
 100          
 101          /*********************************************************************************************************
 102          ** 函数名称: IICWrite
 103          ** 功能描述: 往IIC总线写数据
 104          ** 输 入: Addr:IIC从器件地址
 105          **         Data:存储将要写的数据
 106          **         Nbyte:写的字节数目
 107          ** 输 出: TRUE:成功
 108          **         FALSE:失败
 109          ** 全局变量: 无
 110          ** 调用模块: 无
 111          ********************************************************************************************************/
 112                  uint8 IICWrite(uint8 Addr ,uint8 *Data,uint8 NByte)
 113          {
 114   1          uint8 i;
 115   1      
 116   1          Addr = Addr & 0xfe;
 117   1          if (IICStart() == FALSE)
C51 COMPILER V7.08   IIC_MASTER                                                            03/31/2006 18:35:32 PAGE 3   

 118   1          {
 119   2              return FALSE;
 120   2          }
 121   1          if (IICSend(Addr) == FALSE)
 122   1          {
 123   2              return FALSE;
 124   2          }
 125   1              /*
 126   1              -------------------------------------
 127   1              */
 128   1              if(IICSend(0x00)==FALSE)
 129   1              {
 130   2                      return FALSE;
 131   2              }
 132   1              /*
 133   1              -------------------------------------
 134   1              */
 135   1          i = NByte;
 136   1          do
 137   1          {
 138   2              if (IICSend(*Data++) == FALSE)
 139   2              {
 140   3                  return FALSE;
 141   3              }
 142   2          } while (--i !=0 );
 143   1          IICStop();
 144   1          return TRUE;
 145   1      }
 146          
 147          /*********************************************************************************************************
 148          ** 函数名称: IICInit
 149          ** 功能描述: IIC总线初始化
 150          ** 输 入: 无
 151          ** 输 出: 无
 152          ** 全局变量: 无
 153          ** 调用模块: 无
 154          ********************************************************************************************************/
 155                  void IICInit(void)
 156          {
 157   1          SCL = 0;
 158   1          IICStop();
 159   1      }
 160           
 161          /*********************************************************************************************************
 162          ** 函数名称: IICStart
 163          ** 功能描述: 发送IIC启动信号
 164          ** 输 入: 无
 165          ** 输 出: TRUE:成功
 166          **         FALSE:失败
 167          ** 全局变量: 无
 168          ** 调用模块: 无
 169          ********************************************************************************************************/
 170                  uint8 IICStart(void)
 171          {
 172   1          SDA = 1;
 173   1          SCL = 1;
 174   1              _nop_();
 175   1          if (SDA == 1)
 176   1          {
 177   2              SDA = 0;

⌨️ 快捷键说明

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