24c02单片机相关

[复制链接]
查看11 | 回复1 | 2011-7-16 15:15:32 | 显示全部楼层 |阅读模式
向有子地址器件读取多字节数据函数

函数原型: bitISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);
功能:
从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件

地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。

如果返回1表示操作成功,否则操作有误。
注意:
使用前必须已结束总线。
----------------------------------------------------------------*/
bit IRcvStr(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);
Start_I2c();
SendByte(sla+1);

if(ack==0)return(0);
for(i=0;i<no-1;i++)

{

*s=RcvByte();
//发送数据

Ack_I2c();
//发送就答位

s++;

}
*s=RcvByte();

NoAck_I2c();
//发送非应位
Stop_I2c();
//结束总线
return(1);
这是读EEPROM的C语言程序,子函数就不予以列举了!
请问: Start_I2c();
SendByte(sla+1);

if(ack==0)return(0);
for(i=0;i<no-1;i++)

{

*s=RcvByte();
//发送数据

Ack_I2c();
//发送就答位

s++;

}
这段是什么意思,为什么发送sla+1的数据,还有就是后面的 !!这是为什么

回复

使用道具 举报

千问 | 2011-7-16 15:15:32 | 显示全部楼层
sla 表示地址加写数据sla+1 表示地址加读数据...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行