yihui184 发表于 2012-10-25 13:57:55

DS1302用纽扣电池,断电后,可以让时间不丢失,寄存器哪.....

请问下,DS1302要用到纽扣电池,程序里面要怎么设置呢?
要操作什么呢?谢谢啦!voidDS1302_Init(void)      
{                                                         
   RST= 0;
   SCK= 0;
   write_ds1302( 0x8E, 0x00 );         //关写保护
    write_ds1302( 0x90, 0xA7 );         //充电(1个二极管 + 8K电阻)
    write_ds1302( 0x8E, 0x80 );         //开写保护
if( read_ds1302(0x81) & 0x80 )      
{
      set_time(&time);                  
}

yihui184 发表于 2012-10-25 14:04:50

还想请问下,设置成24小时制的时候,
write_ds1302(0x84, 0x12) ;就可以哇?

s3c2440 发表于 2012-10-25 14:07:40

//设置1302的初始时间(自动初始化)
void Init_1302(void){//-设置1302的初始时间(2007年1月1日00时00分00秒星期一)
        unsigned char f;
        if(read_clock(0xc1) != 0xaa){
                write_clock(0x8e,0x00);//允许写操作
                write_clock(0x8c,0x07);//年
                write_clock(0x8a,0x01);//星期
                write_clock(0x88,0x01);//月
                write_clock(0x86,0x01);//日
                write_clock(0x84,0x00);//小时
                write_clock(0x82,0x08);//分钟
                write_clock(0x80,0x00);//秒
                write_clock(0x90,0xa5);//充电       
                write_clock(0xc0,0xaa);//写入初始化标志RAM(第00个RAM位置)
                for(f=0;f<60;f=f+2){//清除闹钟RAM位为0
                        write_clock(0xc2+f,0x00);
                }
                write_clock(0x8e,0x80);//禁止写操作
        }
}
/**
我用的是杜洋的程序用着还行

yihui184 发表于 2012-10-25 14:19:05

s3c2440 发表于 2012-10-25 14:07 static/image/common/back.gif
//设置1302的初始时间(自动初始化)
void Init_1302(void){//-设置1302的初始时间(2007年1月1日00时00分0 ...

谢谢你,我现在做一个项目,最后一个问题就是DS1302断电后,可以继续读出时钟!我想问下,设置24小时制的时候,要怎么设置哇?顺便告诉我一下,谢谢啦!

lovejp1981 发表于 2012-10-25 14:57:16

初始化写入寄存器84h Bit7 = 1

lovejp1981 发表于 2012-10-25 15:00:24

DS1302 如果主电源和电池都断电的话是不会保存时间的,而且写入寄存器的值也会丢失。

yihui184 发表于 2012-10-25 16:40:12

lovejp1981 发表于 2012-10-25 14:57 static/image/common/back.gif
初始化写入寄存器84h Bit7 = 1

你好,我在向DS1302中写入时间的时候,写入的是12点,没有对那个位怎么操作,过了12点,用串口调试助手打印出来,到了1点的时候,是13点。说明我向1其写入0~12点是,24小时制的吧!

lovejp1981 发表于 2012-10-26 12:38:09

都13点了 你还不敢确认是24小时制啊

yihui184 发表于 2012-11-7 23:07:22

s3c2440 发表于 2012-10-25 14:07 static/image/common/back.gif
//设置1302的初始时间(自动初始化)
void Init_1302(void){//-设置1302的初始时间(2007年1月1日00时00分0 ...

你好,大哥,我现在还是遇到DS1302的问题,我想问下,我DS1302在开发板上面程序是初始化设置好时间后,再在while循环读取时间,然后通过串口调试助手,把时间打印出来了,再延迟1s,循环读时间,再打印,这样是正确的。现在,我在做一个项目,要用到DS1302,我把在开发板上面跑成功的这个程序移植过来,然后加上你告诉我的设置纽扣电池起作用的这个函数。我这个项目里面的DS1302程序现在出现问题了,就是读时间大都正确,就是有时候突然读出一个不正常的日期,经常读出2018年这样的数据,我在写和读DS1302都禁止了中断,我不知道为什么会出现,读DS1302的时间怎么有时候突然会读出一个乱的日期!请问您遇到过么?

sf49ers 发表于 2012-11-7 23:24:42

听着象通讯受干扰,每回连着读两次,时间(除秒外)一样才接受,1302不带校验是挺讨厌的
页: [1]
查看完整版本: DS1302用纽扣电池,断电后,可以让时间不丢失,寄存器哪.....