当前位置: 代码迷 >> 单片机 >> IIC应答位的有关问题 求解…
  详细解决方案

IIC应答位的有关问题 求解…

热度:224   发布时间:2016-04-28 16:30:52.0
IIC应答位的问题 求解……
/*----------------------------
  向有子地址器件发送多字节数据函数  
函数原型: bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  
功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
  地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
  如果返回1表示操作成功,否则操作有误。
注意: 使用前必须已结束总线。
----------------------------*/
C/C++ code
bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no){   unsigned char i;   Start_I2c();               //启动总线   SendByte(sla);             //发送器件地址     if(ack==0)return(0);   SendByte(suba);            //发送器件子地址     if(ack==0)return(0);   for(i=0;i<no;i++)    {        SendByte(*s);            //发送数据       if(ack==0)return(0);     s++;    }  Stop_I2c();                  //结束总线  return(1);}


 if(ack==0)return(0); 如果产生应答位 不就退出函数了吗 还怎么进行下面的数据操作

------解决方案--------------------
这仅仅是理解的问题!对照全程序看
if(ack==0) return(0); 
可以翻译成,如果没有应答信号就返回;而不要理解成应答信号=0电平就返回。
------解决方案--------------------
探讨

[code=C/C++]

SDA=1; //8位发送完后释放数据线,准备接收应答位
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
……
  相关解决方案