/*----------------------------
向有子地址器件发送多字节数据函数
函数原型: 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电平就返回。
------解决方案--------------------