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

📄 iic.c

📁 pcf8563 51单片机
💻 C
字号:
#include "iic.h"


void delay(unsigned int time)
{
 while(time--);


}



/* 功能描述:主设备发出无应答
   隶属模块:IIC模块
   函数属性:外部,供用户使用
   注:主设备(比如单片机)从从设备(比如PCF8563)
       进行读取,就要给从设备一个NACK(即无应答) */

void IIC_NAck()
{
 SDA=1;
 delay(DelayTime);
 SCL=1;
 delay(DelayTime);
 SCL=0;
 delay(DelayTime);


}

/* 功能描述: IIC启动
   隶属模块: IIC模块
   函数属性: 外部,供用户使用 */

void IIC_Start()
{
  SDA=1;
  delay(DelayTime);
  SCL=1;
  delay(DelayTime);
  SDA=0;
  delay(DelayTime);
  SCL=0;
  delay(DelayTime);


}

//IIC结束部分
void IIC_Stop()
{
  SDA=0;
  delay(DelayTime);
  SCL=1;
  delay(DelayTime);
  SDA=1;
  delay(DelayTime);
  SCL=0;
  delay(DelayTime);


}

/* 功能描述:主设备发出应答
   隶属模块:IIC模块
   函数属性:外部,供用户使用
   注:主设备(比如单片机)从从设备(比如PCF8563)
       进行读取,就要给从设备一个ACK(即应答) */

void IIC_Ack()
{ 
 SDA=0;
 delay(DelayTime);
 SCL=1;
 delay(DelayTime);
 SCL=0;
 delay(DelayTime);


}

/* 功能描述:主设备检测从设备应答
   隶属模块:IIC模块
   参数说明:无
   返回说明:从设备的应答值
   注:主设备(比如单片机),向从设备(比如pcf8563)写入字节后,要检测从设备
      发出的应答,如果数据位SDA为0,说明向从设备成功写入*/

unsigned char IIC_Get_Ack()
{
 unsigned char Error;
 SDA=1;
 delay(DelayTime);
 SCL=1;
 delay(DelayTime);
 Error=SDA;
 delay(DelayTime);
 SCL=0;
 delay(DelayTime);
 return Error;


}


/* 功能描述:主设备向从设备写入一个字节
   隶属模块:IIC模块
   隶属函数:外部,供用户使用
   参数说明:dat:将要写入的字节
   返回说明:从设备的应答值
   注:向从设备写入一个字节,并返回从设备的应答值*/
 
unsigned char IIC_Write_Byte(unsigned char dat)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {

    SDA=((dat<<i)&0x80);
    SCL=1;
    delay(DelayTime);
    SCL=0;
    delay(DelayTime);
    
  
   }
   return IIC_Get_Ack();

}

/* 功能描述:主设备向从设备读入一个字节
   隶属模块:IIC模块
   隶属函数:外部,供用户使用
   返回说明:读到的字节*/

unsigned char IIC_Read_Byte()
{
  unsigned char i,rbyte=0;
  SDA=1;
  for(i=0;i<8;i++)
  {
   SCL=1;
   delay(DelayTime);
   if(SDA) rbyte|=(0x80>>i);
   SCL=0;
   delay(DelayTime);
  
  }
 return rbyte;



}

⌨️ 快捷键说明

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