接口时序的实现
    DS1302的基本操作实际上非常简单,只有两个操作:其一是设定时间参数,其二是读取实时时间。不管是那个操作,MCU都要通过SPI接口进行数据交互,而SPI接口有其规定的时序,这个必须参考数据手册。
    控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟信号的上升沿,数据被写入DS1302,数据的输入从最低位开始;在控制字指令输入后的下一个SCLK时钟信号的下降沿,数据从DS1302读出,数据的读出也是从最低位到最高位。
    <1> 单字节写的时序
    学习24 - 图1
    51单片机-DS1302-05.PNG (25.11 KB, 下载次数: 3)
    下载附件 保存到相册
    2018-2-10 12:21 上传

    1. 底层驱动代码实现可参考如下:
    1. void DS1302_WriteByte(unsigned char addr, unsigned char dat)
    2. {
    3. unsigned char n;
    4. RST = 0;
    5. nop();
    6. SCLK = 0;
    7. nop();
    8. RST = 1;
    9. nop();

    10. for (n=0; n<8; n++) //发送要写入数据的内存地址
    11. {
    12. DSIO = addr & 0x01;
    13. addr >>= 1;
    14. SCLK = 1;
    15. nop();
    16. SCLK = 0;
    17. nop();
    18. }
    19. for (n=0; n<8; n++) //将指定内容写入该地址的内存
    20. {
    21. DSIO = dat & 0x01;
    22. dat >>= 1;
    23. SCLK = 1;
    24. nop();
    25. SCLK = 0;
    26. nop();
    27. }
    28. RST = 0;
    29. nop();
    30. }