2019-08-11 19:15发布
天耀中华 发表于 2017-10-16 21:14 您好,我想问一下,这里的receive怎么就能是主机读取的字节呢,它仅仅表示计数啊,IIC这个协议可以看通,可 ...
最多设置5个标签!
//读1个字节,ack=1时,发送ACK,ack=0,发送nACK
u8 IIC_Read_Byte(unsigned char ack)
{
unsigned char i,receive=0;
SDA_IN();//SDA设置为输入
for(i=0;i<8;i++ )
{
IIC_SCL=0;
delay_us(2);
receive<<=1;//这里讲接收到的数据左移,原来发送函数先发送高位,现在接受的话如果依然左移,使得数据变得和原来的本末倒置了啊。
if(READ_SDA)receive++;
delay_us(1);
}
if (!ack)
IIC_NAck();//发送nACK
else
IIC_Ack(); //发送ACK
return receive;
}
++保存1,不加保存0
一周热门 更多>