我在网上找到了几个跨页写的版本,经过尝试都失败了,下面是关键函数
void eeprom_write_nbyte(uint addr,uchar *pbuf,uchar len) //eeprom写n字节
{
#if 1
while(len--)
{
//iic_write_byte(EEPROM_24CXX_SLAVE_ADDR,addr++,*pbuf++);
WriteI2CByte (EEPROM_24CXX_SLAVE_ADDR,addr++,*pbuf++);
delay_ms(5); //24cxx寫一字節後必須延時
}
#else
while(len)
{
//iic_write_byte(EEPROM_24CXX_SLAVE_ADDR,addr,*pbuf);
WriteI2CByte (EEPROM_24CXX_SLAVE_ADDR,addr++,*pbuf++);
addr ++;
pbuf ++;
len --;
}
#endif
}
但是在上面的函数里调用了一个WriteI2CByte (EEPROM_24CXX_SLAVE_ADDR,addr++,*pbuf++);
而我的函数是这样的,写一个字节,无法调用,那位看看如何解决,谢谢
void WriteI2CByte(uchar ByteData)
{
uchar i,temp;
temp = ByteData;
// (StartI2C()最后已经先将SCL变0了):
for(i=0;i<8;i++){
temp <<= 1;
SDA = CY;
delay5us();
SCL = 1;
delay5us();
SCL = 0;
delay5us();
}
}
|