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);
}
展开
 我来答
百度网友9c1e9f9
2013-09-19
知道答主
回答量:1
采纳率:0%
帮助的人:1444
展开全部
因为SCL相当于时钟信号,SCL必须进过1、0一个循环后,SDA才会进行下一次有效赋值,SCL每一次循环,SDA都可以进行一次赋值(读或者写),而且是在SCL为0时变化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夹谷欣然户瑾
2019-06-21 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:34%
帮助的人:584万
展开全部
这么简单还用问?你要看i2c总线的规范,sda线上的数据必须在时钟线scl的高电平间保持稳定,数据线的电平状态只有在scl线的时钟信号为低电平是才能改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式