首页 理论教育 零点起步:AVR单片机开发入门实例

零点起步:AVR单片机开发入门实例

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:图15-3 数据输入输出功能图2.DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字如表15-1所示。表15-1 日历、时间寄存器及其控制字(续)此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。若CH=0,DS1302内部时钟运行;CH=1,DS1302内部时钟停止。当DS1302掉电时,可以马上调用外部电源保护时间数据。设置该寄存器后,可操作DS1302的各个寄存器。

DS1302的控制字如图15-2所示。控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5~1指示操作单元的地址。最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字总是从最低位开始输出。

978-7-111-35161-0-Chapter15-2.jpg

图15-2 DS1302的控制字

1.数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0到高位7,如图15-3所示。图中上半部分为读信号字节的时序图,下半部分为写信号字节的时序图。

978-7-111-35161-0-Chapter15-3.jpg

图15-3 数据输入输出功能图

2.DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字如表15-1所示。

表15-1 日历、时间寄存器及其控制字

978-7-111-35161-0-Chapter15-4.jpg

(续)

978-7-111-35161-0-Chapter15-5.jpg

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写所有寄存器内容(充电寄存器除外)。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

DS1302的寄存器总结如下。

1)CH——时钟停止位。寄存器2的第7位为12/24小时标志位。

CH=0,振荡器工作允许;bit7=1时为12小时模式。

CH=1,振荡器停止;bit7=0时为24小时模式。

2)WP——写保护位。寄存器2的第5位为AM/PM定义位。

WP=0,寄存器数据能够写入;AP=1时为下午模式。

WP=1,寄存器数据不能写入;AP=0时为上午模式。(www.xing528.com)

3)TCS——涓流充电选择。

TCS=1010,使能涓流充电。

TCS=其他,禁止涓流充电。

4)DS——二极管选择位。

DS=01,选择一个二极管。

DS=10,选择两个二极管。

DS=00或11,即使TCS=1010,充电功能也被禁止。

寄存器选择位如表15-2所示。

表15-2 寄存器选择位

978-7-111-35161-0-Chapter15-6.jpg

对于DS1302控制字的描述总结如下,包括时钟控制和RAM区控制,如图15-4所示。

在图15-4中,左边为寄存器和RAM的地址,右边为具体内容。各个寄存器的最高位都是1,最低位都是RD/W。比如要读秒寄存器则命令为10000101,反之写为10000100,其含义各不相同。

其中SEC为秒寄存器,在图15-4的右边:低四位为SEC,高次三位为10SEC,最高位CH为DS1302的运行标志位。若CH=0,DS1302内部时钟运行;CH=1,DS1302内部时钟停止。

978-7-111-35161-0-Chapter15-7.jpg

图15-4 时钟控制和RAM区控制

MIN为分寄存器。HR为时寄存器:最高位为12/24小时格式选择位,当该位是1则表示选择12小时制。第5位的高电平表示下午PM;当该位是0则表示选择24小时制。第5位表示具体的时间数据。

DATE为日寄存器。MONTH为月寄存器。DAY为周寄存器:一周只有7天,所以该寄存器只有3位。

YEAR为年寄存器。CONTROL为写保护寄存器:当该寄存器最高位WP为1时,DS1302只读不写,所以要在向DS1302写数据之前保证WP为0。

TRICKLE CHARGE REGISTER为涓电流充电设置寄存器。当DS1302掉电时,可以马上调用外部电源保护时间数据。该寄存器就是配置备用电源的充电选项的。高4位只有在1010的情况下才能使用充电选项。

CLOCK BURST为批量读写操作设置寄存器。设置该寄存器后,可操作DS1302的各个寄存器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈