为什么我rtc第一次读到的数据是对的,但是在键盘上乱按几个键,就开始乱变了,虽然我的程序中有循环,但是应该只是重新读一次吧,还不至于错吧!!!
程序程序结构是:
while(1)
{
pcf8563_operation() ;//这里包括了先写后读
}
还有就是:
unsigned char rtc_read(unsigned char address)
{
unsigned char d;
I2C_Start();
Write_I2C_Byte(0xa2);
Write_I2C_Byte(address);
I2C_Start();
Write_I2C_Byte(0xa3);
d=Read_I2C_Byte();
d=d>>1; //这里的移位有啥作用,搞不懂,我没有用到,只是看到网上的程序都有这个操作
I2C_Stop();
return d;
}
希望大神们可以帮小弟的忙,谢谢!!
------解决方案--------------------
uint8_t SoftI2C_PCF8563_ByteRead(uint8_t rtc_addr)
{
uint8_t rev_data;
//SoftIICInit();
//开始信号
IICStart();
IICWrite(0xA2);
IICTestAck();
IICWrite(rtc_addr);
IICTestAck();
//开始信号
IICStart();
IICWrite(0xA3);
IICTestAck();
IICRead(&rev_data);
IICNoAck();
//结束信号
IICStop();
return rev_data;
}
我这里没有你那个多余的动作,呵呵
------解决方案--------------------
单从LZ给的那个循环,无法得知道,你为什么出错。。。