uchar code READ_RTC_CODE[7]={0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
void Ds1302ReadTime()
{
uchar n;
for(n=0;n<7;n++)
{
TIME[n]=Ds1302read(READ_RTC_CODE[n]);
}
}
uchar Ds1302read(uchar addr)
{
uchar n,dat,dat1;
RST=0;
_nop_();
SCLK=0;
_nop_();
RST=1;
_nop_();
for(n=0;n<8;n++)
{
DSIO= addr & 0x01;
addr>>=1;
SCLK=1;
_nop_();
SCLK=0;
_nop_();
}
_nop_();
for(n=0;n<8;n++)
{
dat1=DSIO;
dat=(dat>>1)|(dat1<<7);
SCLK=1;
_nop_();
SCLK=0;
_nop_();
}
RST=0;
_nop_();
SCLK=1;
_nop_();
DSIO=0;
_nop_();
DSIO=1;
_nop_();
return dat;
}
void Ds1302ReadTime()
{
uchar n;
for(n=0;n<7;n++)
{
TIME[n]=Ds1302read(READ_RTC_CODE[n]);
}
}
uchar Ds1302read(uchar addr)
{
uchar n,dat,dat1;
RST=0;
_nop_();
SCLK=0;
_nop_();
RST=1;
_nop_();
for(n=0;n<8;n++)
{
DSIO= addr & 0x01;
addr>>=1;
SCLK=1;
_nop_();
SCLK=0;
_nop_();
}
_nop_();
for(n=0;n<8;n++)
{
dat1=DSIO;
dat=(dat>>1)|(dat1<<7);
SCLK=1;
_nop_();
SCLK=0;
_nop_();
}
RST=0;
_nop_();
SCLK=1;
_nop_();
DSIO=0;
_nop_();
DSIO=1;
_nop_();
return dat;
}