首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-03-01 
IIC应答位的问题求解……/*----------------------------向有子地址器件发送多字节数据函数函数原型: bitISe

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();
……

热点排行