//在AT24CXX指定地址写入一个数据 //WriteAddr :写入数据的目的地址 //DataToWrite:要写入的数据
voidAT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite){ u16ju; IIC_Start(); if(EE_TYPE>AT24C16) { IIC_Send_Byte(0XA0); //发送写命令 IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr>>8);//发送高地址 }else { ju=WriteAddr/256; IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据 }
IIC_Wait_Ack(); ju=WriteAddr%256; IIC_Send_Byte(WriteAddr%256); //发送低地址 IIC_Wait_Ack(); IIC_Send_Byte(DataToWrite); //发送字节 IIC_Wait_Ack(); IIC_Stop(); //产生一个停止条件 delay_ms(4); }
每写一个字节都需要延时一个4MS的时间,如果少于4MS数据就会出错,这是为什么?如果需要同时写入100个字节就需要400MS,时间也太浪费在里面了吧,请大神指教!!!!!!!!!!在线等 。。。。
|