(3)发送数据
/*Write 1 Byte to IIC*/
void iic_write_byte(uint8 data)
{
uint8 loop;
for(loop = 8;loop > 0;loop --)
{
//先发送最高位,在SCL高电平时,SDA必须保持稳定
SDA = data >> 7;
SCL = HIGH;
delay(50);
//SCL为低电平时,SDA可以任意改变
SCL = LOW;
//低位向高位移动
data <<= 1;
delay(50);
}
return;
}
(4)读取数据
/*Read 1 byte from IIC*/
uint8 iic_read_byte()
{
uint8 loop;
uint8 value = 0;
for(loop = 8; loop > 0;loop --)
{
SCL = HIGH;
delay(50);
value <<= 1;
//读取1位数据
value |= SDA;
SCL = LOW;
delay(50);
}
return value;
}
(5)主机向从机发送ACK信号
void iic_send_ack()
{
SCL = HIGH;
SDA = LOW;
delay(50);
SCL = LOW;
delay(50);
return;
} |