ayb_ice 发表于 2014-5-6 15:50 
仔细检查时序
uint8_t RTC_Read(uint8_t addr)
{
uint8_t dat;
RTC_CS=0;
RTC_RW=1;
RTC_DS=1;
RTC_AS=1;
RTC_DATA=addr;
RTC_AS=0;
RTC_DS=0;
RTC_DATA=0xff; //端口读数之前先写1
dat=RTC_DATA;
RTC_DS=1;
RTC_AS=1;
RTC_CS=1;
return dat;
}
void RTC_Write(uint8_t addr,uint8_t dat)
{
RTC_CS=0; //片选
RTC_DS=1; //在intel总线中,DS等价于RD(Read)
RTC_RW=1; //等待最少20ns 但51执行1条指令就1us
RTC_AS=1; //AS下降沿写入地址信息
RTC_DATA=addr;//先写地址
RTC_AS=0;
RTC_RW=0;
RTC_DATA=dat;//再写数据
RTC_RW=1;
RTC_AS=1;
RTC_CS=1;
}
|