51模拟iic时有点问题没搞懂
我的想法是用if检测应答
如果有应答,I2C_Write(I2C_ID_EEPROM,255,0xf0)返回0,那应该跳出if,直接执行P0 = I2C_Read(I2C_ID_EEPROM, 255) ;
如果没有应答,那应该返回1,执行if里的P0 = 0; delay_ms(5000); 然后执行P0 = I2C_Read(I2C_ID_EEPROM, 255) ;
不过写到单片机里发现不管怎么样,P0都被置低了5s
而且就算把false都备注掉,P0还是被置低了5s
为什么会这样??
我的getack
按18218811680的说法改成这样了,但是好像没什么用。。。
我觉得可能你这个从机地址有问题 就是那个I2C_ID_EEPROM 0xa0
I2C的从机地址是7位的 你把它右移一位 即改成0x50试试先
你的I2C_Write 因为响应速度之类问题,可能会一直返回true(执行到末尾),所以会出现问题
你要重新写那个函数啊,按前面的要大量改造。