当前位置: 代码迷 >> 单片机 >> pcf8563 rtc解决办法
  详细解决方案

pcf8563 rtc解决办法

热度:58   发布时间:2016-04-28 15:50:54.0
pcf8563 rtc
为什么我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给的那个循环,无法得知道,你为什么出错。。。
  相关解决方案