/*********************************************************************
函数名:E2WritePage();
参数列表:第一个为I2C_Add器件地址,第二个addr器件子地址,第三个参数为数据数组,第四个参数为写入的字节数
返回参数:0:写入失败,内存不够,1:正常写入
功能:实现多字节写入器件
************************************************************************/
uchar E2WritePage(uchar I2C_Addr,uchar addr,uchar *buf,uint len)
{
uint i;
if(MAX_E2-addr<len)//判断现存内存是否足够,这里的MAX_E2是我定义的一个宏变量,值是255
return 0;
while(len>0){
I2C_Start();//启动总线
I2C_WriteByte((I2C_Addr<<1));
I2C_WriteByte((addr));//子器件寻址
while(len>0){
I2C_WriteByte(*buf++);//写入数据
addr++;
len--;
//这个Page_bye也是我定义的一个宏变量,值是0x07,
//用来是否写入够8字节了,够了就直接退出内循环,开始写下一页的数据,也就是翻页
if(addr&Page_bye==0)
break;
}
I2C_Stop();
Delay10ms();
}
return 1;
if(addr&Page_bye==0)这一步,写够8个字节,addr=0x07时应该不会成立 但是程序运行正确
|