/*****************************************************************************************************************************************
*Author:JYW
*Time:2019_02_14
*Describe:LetAllLinesOfCodeSpeak
*****************************************************/
/********************************
*单片机IIC驱动程序
****************************/
#include<reg52.h>
#include<intrins.h>
#define I2CDelay() \
{ \
_nop_(); \
_nop_(); \
_nop_(); \
_nop_(); \
} \
//_nop_(); 执行时间为一个机器周期
//NOP指令为单周期指令,可由晶振频率算出延时时间,
//对于12M晶振,延时1uS。对于延时比较长的,
//要求在大于10us,采用C51中的循环语句来实现。
sbit I2C_SCL = P3^7;
sbit I2C_SDA = P3^6;
/*产生总线起始信号*/
void I2CStart()
{
I2C_SDA = 1;
I2C_SCL = 1;
I2CDelay();
I2C_SDA = 0;
I2CDelay();
I2C_SCL = 0;
}
/*产生总线停止信号*/
void I2CStop()
{
I2C_SCL = 0;
I2C_SDA = 0;
I2CDelay();
I2C_SCL = 1;
I2CDelay();
I2C_SDA = 1;
I2CDelay();
}