中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

在DS1302中写入数据,需要先写入地址/命令,然...

 小王很优秀

下载贤集网APP入驻自媒体

在DS1302中写入数据,需要先写入地址/命令,然后才能写数据
附图上,小时寄存器的7位来选择 12进制还是24进制  当为高时是12小时 低时是24小时 最左侧一栏有读地址和写地址 在写入地址/命令后就可以设定7位
图上小时寄存器7位为1;
但是我按照表格左侧的地址写代码的时候,通过数码管显示的时候还是24小时制的,这和数据手册描述的不一样啊!
为很么会出现这样的情况?

最新回复
发布回复
对于1302的操作分两部分,一部分是控制字,也就是地址及命令字节,另一部分是数据。比如向小时寄存器写入24小时制的13点,应该是先发送0x84h,这个是写小时寄存器的地址,再发送0x13h,这个是小时的数据13点。如向小时寄存器写入12小时制的下午1点,应该是先发送0x84h,再发送0xc1h。读取小时寄存器数据则是先发送0x85h,这个是读小时寄存器的地址,再读取小时寄存器的数据。
不是很明白你的问题,首先1302对同一寄存器的读和写地址是不一样的。其次对于小时来说在12小时制时有AM和PM的区别,按上图的内容看,如果是12小时制,那么如果不判断AM和PM,在12点向1点转换的时候,会将1点读为21点。
这里set_time(WRITE_HOUR,23);,我认为你是设置了小时为23点,但是这里第7位为0,所以还是24小时制,如果要设置成12小时制,比如上午11点,那么所写入的十六进制格式应该是0x91,试试看,应该是这样。在12小时制的情况下,读写小时寄存器时都应该要判断和设置AM,PM标志。

为您推荐

热门交流