本帖最后由 eehome 于 2013-1-5 09:58 编辑
请看下面代码为oki mcu(ML610Q411) 读写外部EEPROM(24C02),但是
通信不成功。用示波器测的SDA引脚发送完器件地址的高四位便停止了。请高手帮忙解决。
void I2C_Init(void)
{
I2C0CON = 0x00; //stop communica
tion,acknowledgment data "0"
I2C0MOD = 0x13; //Enable I2C,standard mode
}
unsigned char WaitAck(void)
{
return (!I20ACR);
}
void Write24C02(unsigned char add,unsigned dat) {
I2C0CON = 0x01;
I2C0SA = 0xA0;
WaitAck();
I2C0CON = 0x01;
I2C0TD = add;
WaitAck();
I2C0CON = 0x01;
I2C0TD = dat;
WaitAck();
I2C0CON = 0x02;
}
unsigned char Read24C02(unsigned char add) {
unsigned char data;
I2C0CON = 0x01;
I2C0SA = 0xA0;
WaitAck();
I2C0CON = 0x01;
I2C0TD = add;
WaitAck();
I2C0CON = 0x05;
I2C0SA = 0xA1;
WaitAck();
data = I2C0RD;
I2C0CON = 0x81;
I2C0CON = 0x02;
return data;
}