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

在写满一页后,需要结束总线,然后从新启动总线,再写入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);
}

 

 

 

 

 

你可能感兴趣的:(硬件开发与编程设计)