I2C总线写的程序,为什么在sda=CY之后,要scl=1,延时,在scl=0
voidwritebyte(uchardat){uchari,temp;scl=0;delay(5);temp=dat;for(i=0;i<8;i++){temp=tem...
void writebyte(uchar dat)
{
uchar i,temp;
scl=0;
delay(5);
temp=dat;
for(i=0;i<8;i++)
{
temp=temp<<1;
sda=CY;
delay(5);
scl=1;
delay(5);
scl=0;
delay(5);
}
sda=1;
delay(5);
} 展开
{
uchar i,temp;
scl=0;
delay(5);
temp=dat;
for(i=0;i<8;i++)
{
temp=temp<<1;
sda=CY;
delay(5);
scl=1;
delay(5);
scl=0;
delay(5);
}
sda=1;
delay(5);
} 展开
2个回答
展开全部
因为SCL相当于时钟信号,SCL必须进过1、0一个循环后,SDA才会进行下一次有效赋值,SCL每一次循环,SDA都可以进行一次赋值(读或者写),而且是在SCL为0时变化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询