单字节读的时序
    b467b8b3c5fc862995c6378ef5f0986c.jpg
    底层驱动代码实现可参考如下:
    unsigned char DS1302ReadByte(unsigned char addr)
    {
    unsigned char n,dat,tmp;
    RST = 0;
    _nop
    ();
    SCLK = 0;
    nop();
    RST = 1;
    nop();

    1. for(n=0; n<8; n++) //发送要读出数据的内存地址<br /> {<br /> DSIO = addr & 0x01;<br /> addr >>= 1;<br /> SCLK = 1;<br /> _nop_();<br /> SCLK = 0;<br /> _nop_();<br /> }<br /> <br /> for(n=0; n<8; n++) //读出该地址内存的数据<br /> {<br /> tmp = DSIO;<br /> dat = (dat>>1) | (tmp<<7);<br /> SCLK = 1;<br /> _nop_();<br /> SCLK = 0;<br /> _nop_();<br /> }
    2. RST = 0;<br /> _nop_();<br /> SCLK = 1;<br /> _nop_();<br /> DSIO = 0;<br /> _nop_();<br /> DSIO = 1;<br /> _nop_();<br /> return dat; <br />}