单片机IIC通信问题,下面括号内的内容我不太明白,希望给详细的讲解一下

接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,(这时接收器件可以将SCL线拉成低电平,从而使主机处于等待... 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,(这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行)。

这一点对于有IIC功能管脚的单片机还好解释, 但是一般的单片机不是通过软件编程的方法实现吗 接收器件可以将SCL线拉成低电平,从而使主机处于等待状态 ,但是单片机是按照程序一条一条执行的,在发送的时候,scl电平的变化,应该不能改变单片机的程序的执行吧,下面是一个写字节的程序,我不明白接收器件可以将SCL线拉成低电平后,对传送程序有什么影响。

void write_byte(uchar date)
{
uchar i,temp;
temp=date;

for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
展开
 我来答
njufoolfish
2012-04-20 · TA获得超过579个赞
知道小有建树答主
回答量:499
采纳率:75%
帮助的人:521万
展开全部
写得有乱,建议严格区分开主机、从机,接收、发送这4个概念

网上的IIC模拟程序,大多不带总线管理功能,只是单纯的收发。要实现管理功能,需要在模拟程序里面,插上判断语句。
例如:接收器件忙时,会在总线上反映出来,发送器件检测总线电平,若忙,则return或调有wait函数。
追问
谢谢  你那有简单点的带总线管理功能的程序吗  能给发一下吗
追答
没有,都是根据具体要求改过的,无法通用。

做法很简单,通用程序里都有多字节收发函数,是调用其它各步骤,如起始、发送单字节、查询应答等子函数,综合而成的。

一般简单处理是:在每发送完1字节后,都需要检查一次应答,如不应答,则退出。
你要做的改动就是:如不应答,执行你想要的操作,等待或其它。
duyin2011
2012-04-20 · TA获得超过2400个赞
知道大有可为答主
回答量:1723
采纳率:100%
帮助的人:669万
展开全部
如果等待设备发来响应 ,cpu 想干别的用if判断,不想干别的,,用while判断.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式