这是写一个字节的时序
void Write_IIC_Byte(unsigned char IIC_Byte)
{
unsigned char i;
for(i=0;i<8;i++) //1个字节8位二进制
{
if(IIC_Byte & 0x80) //判断这个字节数据的最高位是否为1
SDA=high; //如果最高位为1,在数据线上置高电平
else
SDA=low; //如果最高位为0,则在数据线上置低电平
SCL=high; //产生一个时钟信号
SCL=low;
IIC_Byte<<=1; //把该数据左移1位,即原来D6位移至D7位(最高位)
}
SDA=1; //8位数据传送完毕,按IIC总线要求进行提到答
SCL=1;
SCL=0;
} |