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

pcf8563 rtc解决方案

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