DS1302有一个比较重要的寄存器的地址
其中第一位固定为高位
D6这个位置代表的是对RAM 还是时钟寄存器进行操作
D5-D1代表的是秒 分 时等计数器的选择位
D0代表的是对寄存器进行读还是写操作其中 D0 = 0进行写操做
D0 = 1进行的是读操作
其中DS1302进行初始化配置的时候就是配置这个寄存器
当进行初始化设置后
写写入Ds1302Write(0x8e,0x00)代表的进行关闭写保护,
好像意思就是可以对寄存器里面的数据进行修改操作
之后写入秒 分 时 寄存器的写入
uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13}; ///
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
void Ds1302Init()
{
uchar n;
Ds1302Write(0x8E,0X00);
for (n=0; n<7; n++)//Ð
{
Ds1302Write(0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c},TIME[n]);
}
这里注意一下需要开启写保护功能
Ds1302Write(0x8E,0x80);
}
其中这里的大致情况是0000 代表秒 0010 代表分 0100代表时
1000 代表月 1010代表周 1100 代表的是年吧??
其中需要注意的一点是 D0 = 0 TIME[]代表的是写入初始值的时钟数字
之后可以对数据进行读取的操作了
读取需要对寄存器进行操作
其**实读取仅仅是比写入多加一,也就是D0 = 0变成 D0 = 1;**其他的地址位都没有改变
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
记住 读取的话记得返回一个值,那个值为BCD码
个人理解: 好像是对读操作还是写操作的时序图都是一样的
只是输入的命令不同 其中命令有写命令和读命令而已,
也不知到正不正确