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

📄 iic.lst

📁 proteus 的51实验板 .
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   IIC                                                                   01/23/2008 15:09:59 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN iic.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE iic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1                                                                  /******************************************************************************/
   2          /**
   3          /** 模 块 名: -------------------IIC.C--------------------------------------
   4          /**            -----------------PCF8583实时时钟模块-------------------------*/
   5          /** 功能描述: 
   6          /**
   7          /** 创 建 人: huangtiexiong    日期:2006-11-28   */
   8          /** 修 改 人:                  日期:2006-11-28   */ 
   9          /** 其他说明: 
  10          /******************************************************************************/
  11          #include <reg52.h>
  12          
  13          #include<stdio.h>
  14          
  15          #include <string.h>
  16          #include "intrins.h"
  17          
  18          
  19           sbit SDA = P2^7;
  20          sbit SCL = P2^6 ;
  21          
  22          #define TRUE 1
  23          #define FALSE 0
  24          /*************************************************
  25              模块级变量申明                 
  26          *************************************************/
  27          
  28          //…………模块级变量申明在这
  29           void   IIC_Start(void);
  30           void   IIC_Stop(void);
  31           void   IIC_TxByte(unsigned char  tx_byte);
  32           unsigned char          IIC_RxByte(void);
  33           unsigned char          IIC_WaitAck(void);
  34           void   IIC_SendAck(void);
  35           void   IIC_SendNoAck(void);
  36          
  37          /*************************************************
  38              子函数定义                  
  39          *************************************************/
  40          
  41          /*******************************************************************************
  42          *** 函 数 名: static void IIC_Start(void)
  43          *** 功能描述: 
  44          *** 全局变量: NO !
  45          *** 输          入: NO !
  46          *** 输          出: NO !
  47          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  48          *** 修 改 人:                                                                          日期:2006-11-28
  49          *** 函数说明: Start IIC.
  50          /******************************************************************************/
  51           void IIC_Start(void)
  52          {
  53   1              EA = 0;                 //关中断;
  54   1              SDA = 1;                //初始化总线;
  55   1              SCL = 1;                
C51 COMPILER V8.08   IIC                                                                   01/23/2008 15:09:59 PAGE 2   

  56   1              _nop_();
  57   1              SDA = 0;                //启动总线;
  58   1              _nop_();
  59   1              SCL = 0;                //准备数据发送,启动IIC之后传输线全部置0;
  60   1              }
  61          /*******************************************************************************
  62          *** 函 数 名: static void       IIC_TxByte(unsigned char tx_byte)
  63          *** 功能描述: 发送一个字节;
  64          *** 全局变量: NO !
  65          *** 输          入: tx_byte
  66          *** 输          出: NO !
  67          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  68          *** 修 改 人:                                                                          日期:2006-11-28
  69          *** 函数说明: 操作完成后保证SCL为0;
  70          /******************************************************************************/
  71           void   IIC_TxByte(unsigned char  tx_byte)
  72          {//SDA:0; SCL:0.
  73   1              unsigned char  i;
  74   1              for(i=0;i<8;i++)
  75   1              {
  76   2                      if(tx_byte & 0x80)
  77   2                              SDA = 1;                                        //因为Start函数中以把SCL拉低,数据直接发送;
  78   2                      else 
  79   2                              SDA = 0;
  80   2                      tx_byte <<= 1;                  //因为发送顺序:由Msb——>Lsb;
  81   2                      SCL = 1;                
  82   2                      _nop_();                //延时;
  83   2                      SCL = 0;                
  84   2                      }
  85   1              }
  86          /*******************************************************************************
  87          *** 函 数 名: static bool       IIC_WaitAck(void)
  88          *** 功能描述: 发送一个字节;
  89          *** 全局变量: NO !
  90          *** 输          入: tx_byte
  91          *** 输          出: NO !
  92          *** 创 建 人:huangtiexiong                       日期:2006-11-28
  93          *** 修 改 人:                                                                          日期:2006-11-28
  94          *** 函数说明: 操作完成后保证SCL为0;
  95          /******************************************************************************/
  96           unsigned char          IIC_WaitAck(void)
  97          {//SDA:U; SCL:0.
  98   1              unsigned char  waitTime = 0xff;         //设置Ack信号超时数;
  99   1              SDA = 1;                //将数据线拉高;
 100   1              SCL = 1;                //启动Ack脉冲;
 101   1              _nop_();
 102   1              while(SDA)
 103   1              {
 104   2                      waitTime--;
 105   2                      if(!waitTime)
 106   2                              {
 107   3                                      SCL = 0;                //SCL=0;
 108   3                                      IIC_Stop();
 109   3                                      return FALSE;
 110   3                                      }
 111   2                      }
 112   1              SCL = 0;                //操作完成后确认SCL为0,此时SDA=0;
 113   1              return TRUE;    
 114   1              }
 115          /*******************************************************************************
 116          *** 函 数 名: static unsigned char      IIC_RxByte(void)
 117          *** 功能描述: 接收一个字节;
C51 COMPILER V8.08   IIC                                                                   01/23/2008 15:09:59 PAGE 3   

 118          *** 全局变量: NO !
 119          *** 输          入: NO !
 120          *** 输          出: 接收字节:tmp
 121          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 122          *** 修 改 人:                                                                          日期:2006-11-28
 123          *** 函数说明: 操作完成后保证SCL为0;
 124          /******************************************************************************/
 125           unsigned char          IIC_RxByte(void)
 126          {//SDA:0; SCL:0;
 127   1              unsigned char  tmp = 0;
 128   1              unsigned char  i;
 129   1              for(i=0;i<8;i++)
 130   1              {
 131   2                      SCL = 0;
 132   2                      SDA = 1;                //向I/O口写1后准备读入;
 133   2                      _nop_();
 134   2                      SCL = 1;
 135   2                      _nop_();
 136   2                      tmp <<= 1;
 137   2                      if(SDA)
 138   2                              {
 139   3                                      tmp |= 0x01;
 140   3                                      }
 141   2                      }
 142   1              SCL = 0;                //SCL=0;
 143   1              return tmp;     
 144   1              }
 145          /*******************************************************************************
 146          *** 函 数 名: static void       IIC_SendAck(void)
 147          *** 功能描述: 发送应答信号;
 148          *** 全局变量: NO !
 149          *** 输          入: NO !
 150          *** 输          出: NO !
 151          *** 创 建 人:huangtiexiong                       日期:2006-11-28
 152          *** 修 改 人:                                                                          日期:2006-11-28

⌨️ 快捷键说明

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