原因
- 闪烁的原因是因为EEPROM读取的数据是错误的不在数码管的显示范围内。
- EEPROM读取的数据错误的原因是IIC在传输数据的过程中定时器中断函数打断了时序,导致收到的数据有问题。
解决方法
在EEPROM读取函数的头加入TR0 / TR1 = 0;尾加入TR0 / TR1 = 1;即:
void EEPROM_Read(unsigned char String, unsigned char Addr, unsigned char Nun)
{
TR1 = 0;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(Addr);
I2CWaitAck();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
while (Num--)
{
*String++ = I2CReceiveByte();
if (Num) I2CSendAck(0);
else I2CSendAck(1);
}
I2CStop();
TR1 = 1;
}
注:不过这个方法会导致数码管显示的时候忽明忽暗。