ds1302 时钟程序详解,ds1302 程序流程图(C 程序) ds1302 时钟程序详解 DS1302 的控制字如图2 所示
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302 中,位6 如果为0,则表示存取日历时钟数据,为1 表示存取RAM 数据;位5 至位1 指示操作单元的地址;最低有效位(位0)如为0 表示要进行写操作,为1 表示进行读操作,控制字节总是从最低位开始输出
3 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0 开始
同样,在紧跟8 位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位0位到高位7
4 DS1302 的寄存器 DS1302 有12 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为BCD 码形式,其日历、时间寄存器及其控制字见表1
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容
DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共 31 个,每个单元组态为一个8 位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31 个字节,命令控制字为FEH(写)、FFH(读)
ds1302 程序流程图 3
2 DS1302 实时时间流程 图4 示出DS1302 的实时时间流程
根据此流程框图,不难采集实时时间
下面结合流程图对 DS1302 的基本操作进行编程: 根据本人在调试中遇到的问题,特作如下说明: DS1302 与微处理器进行数据交换时,首先由微处理