标题: 单片机ds1302时钟的RAM读写程序理解,求各位大神相助 [打印本页]

作者: 123456789hyy    时间: 2021-4-15 17:02
标题: 单片机ds1302时钟的RAM读写程序理解,求各位大神相助
问题一:i = read_ds1302ram(30);//怎么理解???
问题二:if(i != 3)表示的是什么意思,为什么要做这样的判断?

uchar code write_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a};   //写地址
uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};   //读地址
uchar code init_ds[]  ={0x58,0x29,0x07,0x05,0x10,0x14,0x1};   

  1. /*************把数据从ds1302 RAM读出来**0-31*************/
  2. uchar read_ds1302ram(uchar add)
  3. {
  4.         add <<= 1;     //地址是从第二位开始的
  5.         add |= 0x01;   //把最高位置1  是读命令
  6.         add |= 0xc0;   //地址最高两位为 1  
  7.         return(read_ds1302(add));        
  8. }

  9. /*************初始化ds1302时间***************/
  10. void init_ds1302()
  11. {
  12.         uchar i;
  13.         rst = 0;        //第一次读写数据时要把IO口拉低
  14.         clk = 0;
  15.         io = 0;
  16.         i = read_ds1302ram(30);   
  17.         if(i != 3)
  18.         {        
  19.                 i = 3;
  20.                 write_ds1302ram(30,i);                         //4050   4100                 3080
  21.                 write_ds1302(0x8e,0x00);                    //打开写保护
  22.                 for(i=0;i<7;i++)
  23.                 write_ds1302(write_add[i],init_ds[i]);        //把最高位值0 允许ds1302工作
  24.                 write_ds1302(0x8e,0x80);        //关写保护
  25.         }
复制代码



作者: 人人学会单片机    时间: 2021-4-15 17:52
那么一点点容量  没必要浪费单片机的代码
作者: MV-BP1X    时间: 2021-4-17 10:41
时钟芯片资料里面并没有介绍该地址的作用,我用的时候并没有涉及到这个地址,不影响使用。
作者: ytech_cn    时间: 2021-4-18 21:24
你仔细看读函数,最后转换成ram地址oxfc,读的这个地址的数据并进行判断的
作者: ttmax3    时间: 2021-4-19 15:10
就字面上来解答,具体你得根据数据手册来查看
问题一:i = read_ds1302ram(30);//怎么理解???
i= read_ds1302ram(30) 里面的内容

问题二:if(i != 3)表示的是什么意思,为什么要做这样的判断?
如果read_ds1302ram(30) 里面的内容不等于3

这里应该是读取ds1302第30号ram寄存器数据,一般来说这个位上面是秒。具体还是得查数据手册。

作者: birdzhyli    时间: 2021-5-2 23:47
02.uchar read_ds1302ram(uchar add)

03.{

04.        add <<= 1;     //地址是从第二位开始的

05.        add |= 0x01;   //把最高位置1  是读命令

06.        add |= 0xc0;   //地址最高两位为 1  

07.        return(read_ds1302(add));        

08.}
这个嵌套函数能执行完吗?求教




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1