或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 3.1.4 DS1302的数据输入输出
在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3所示:
SCLKRST0I/O1234567014567R/WA0A1A2A3A4R/C1DATA I/O BYTE1DATA I/O BYTE2图3 数据读写时序
3.1.5 DS1302的寄存器
DS1302共有12个寄存器,其中有7个寄存器和日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及和RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。 DS1302和RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H--FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
寄存器名 命令字 写操作 读操作 81H 83H 85H 87H 89H 8BH 取值范围 00--59 00--59 各位内容 7 CH 0 0 0 0 0 6 5 10SEC 10MIN 10 HR 4 3 2 SEC MIN HR DATE MONTH 0 DAY 1 0 秒寄存器 80H 分寄存器 时寄存器 日寄存器 月寄存器 周寄存器 82H 84H 86H 88H 8AH 01-12或00-23 12/24 01-28,29,30,31 01--12 01--07 0 0 0 10DATE 0 0 10M 0 年寄存器 8CH 8DH 00--99 10YEAR YEAR 表2 DS1302的日历、时钟寄存器及其控制字 3.1.6 DS1302 和微控制器的接口软件及功能使用举例
下面首先给出基本的接口软件然后举例说明各种功能的使用 1、 写保护寄存器操作
当写保护寄存器的最高位为0 时允许数据写入寄存器写保护寄存器可以通过命令字节8E 8F 来规定禁止写入/读出写保护位不能在多字节传送模式下写入 Write_Enable:
MOV Command,#8Eh ;命令字节为8E MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给R0
MOV XmtDat,#00h 数据内容为0 写入允许
ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处
当写保护寄存器的最高位为1 时禁止数据写入寄存器 Write_Disable:
MOV Command,#8Eh ;命令字节为8E MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给R0
MOV XmtDat,#80h 数据内容为80h 禁止写入 ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处
以上程序调用了基本数据发送(Send_Byte)模块及一些内存单元定义,
2、单元电路