单片机之IIC--AT24C256 多页读写关键程序段

2019-04-15 13:30发布

在写满一页后,需要结束总线,然后从新启动总线,再写入sla,写入下页的suba,写入数据。。。。 在结束总线和启动总线间要一定要加入延时,长点!!   extern unsigned char enumer; bit ISendStr(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char no) { unsigned char i; unsigned int k;// Start_I2c(); /*启动总线*/ SendByte(sla); /*发送器件地址*/ if(ack==0)return(0); /////////////////////////////////////////// if(AT24C256 == AT24C256) { SendByte((unsigned char)(suba >> 8));//把整型数据转换为字符型数据:弃高取低,只取低8位. //如果容量大于32K位,使用16位地址寻址,写入高八位地址 if(ack==0) return(0); } SendByte((unsigned char)suba); /*发送器件子地址*/ if(ack==0)return(0); for(i=0;i> 8));//把整型数据转换为字符型数据:弃高取低,只取低8位. //如果容量大于32K位,使用16位地址寻址,写入高八位地址 if(ack==0) return(0); } SendByte((unsigned char)suba); /*发送器件子地址*/ if(ack==0)return(0); } suba++; //********************此段判断页*****************************// /*发送数据*/ SendByte(*s++); if(ack==1) continue;//////////////return(0);//////////////////////////// senddd('X'); //没有到这···· ///return(0);//// } Stop_I2c(); /*结束总线*/ return(1); }