ds1302读取数据问题分析及解决

ds1302读取数据问题分析及解决,第1张

  DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。

  工作原理编辑

  DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

  结构

  ds1302读取数据问题分析及解决,ds1302读取数据问题分析及解决,第2张

  DS1302封装图

  控制字节

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

  ds1302读取数据问题分析及解决,ds1302读取数据问题分析及解决,第3张

  数据流

  在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

  寄存器

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

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

  DS1302读取数据问题

  for(i=0;i《8;i++)

  {

  ds1302_SCLK=1;

  ds1302_SCLK=0;

  if(ds1302_IO==1)

  date=date|0x80;

  date》》=1;

  }

  而使用下面的程序的时候就是正确的

  for(i=0;i《8;i++)

  {

  if(ds1302_IO)

  date|=0x80; //每次传输低字节

  ds1302_SCLK=0;

  date》》=1; //右移一位

  ds1302_SCLK=1;

  }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2614488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存