打印
[51单片机]

再问ISL12026的问题

[复制链接]
1250|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
isl, TE, ge, BCD, CD
我搞ISL12026.现在时钟可以走了,只不过不能初始化时间和日期。
就是说可以读时间,但不能写时间。
我的写日期时间函数如下:
ISL12026_TimeWrite(30,26,9,8,11,14);
。。。。。。。。。。。。。。。。。。。。。。。。。
/**************************************************************************/
//写入时间信息,按照秒,分,时,天,月,年的顺序写入
/*************************************************************************/
void ISL12026_TimeWrite(UINT8 second,UINT8 minute,UINT8 hour,UINT8 day,UINT8 month,UINT8 year)
{
    UINT8 temp[8];
    temp[0]=Change10ToBCD(second);
    temp[1]=Change10ToBCD(minute);
    temp[2]=Change10ToBCD(hour)|0x80;
    temp[3]=Change10ToBCD(day);
    temp[4]=Change10ToBCD(month);
    temp[5]=Change10ToBCD(year);
    temp[6]=Change10ToBCD(0);      //周,不用则写0
    temp[7]=Change10ToBCD(20);
    ISL12026_PageWrite(temp,0x30,8);
}
请问高手,写日期时间需要注意什么吗?

我看手册,没发现特别的地方。谢谢!

相关帖子

沙发
ningling_21| | 2014-11-8 10:36 | 只看该作者
LZ写操作之前去除写保护了吗?

使用特权

评论回复
板凳
wangch_sh|  楼主 | 2014-11-8 11:01 | 只看该作者
多谢提醒,没注意这个问题。我看下。

使用特权

评论回复
地板
wangch_sh|  楼主 | 2014-11-8 11:18 | 只看该作者
不行哎。
我的程序
XWrite_eeprom(0x10,0x00);//去除写保护

使用特权

评论回复
5
wangch_sh|  楼主 | 2014-11-8 11:44 | 只看该作者
我发现一个奇怪的问题:
如果我这样初始化
void init_ISL12026()
{
    XWrite_eeprom(0x3F,0x02);
    XWrite_eeprom(0x3F,0x06);
}
然后读SR寄存器:
XWrite_eeprom(0x30,0x00);//
                second=XRead_eeprom(0x3f);
                bai=second/100;
                shi=second%100/10;
                ge=second%10;
                lcd_display_char(10,1,bai+0x30);
                lcd_display_char(11,1,shi+0x30);
                lcd_display_char(12,1,ge+0x30);
得到的结果是0x02

使用特权

评论回复
6
wangch_sh|  楼主 | 2014-11-8 11:45 | 只看该作者
如果我把初始化改为
void init_ISL12026_IQR()
{
    //UINT8 mRtcStatus;
    init_ISL12026();
    //mRtcStatus=ChangeBCDTo10(XRead_eeprom(0x11));
    //mRtcStatus=mRtcStatus;
    XWrite_eeprom(0x11,0x00);//0x18, 1秒一个频冲
    //Delay(100);
        for(i=0;i<80;i++)
                delay();
}
    读到的SR寄存器就是0xff

使用特权

评论回复
7
ningling_21| | 2014-11-8 11:58 | 只看该作者
wangch_sh 发表于 2014-11-8 11:18
不行哎。
我的程序
XWrite_eeprom(0x10,0x00);//去除写保护

写使能是对Status 寄存器的操作,0x10是哪个寄存器?

使用特权

评论回复
8
wangch_sh|  楼主 | 2014-11-8 12:05 | 只看该作者
BL1寄存器。
你说的写使能是RWEL和WEL吗?
我有写:
XWrite_eeprom(0x3F,0x02);
               
            XWrite_eeprom(0x3F,0x06);
不过有问题:
我写完后,读SR寄存器:
值为2,也就是说RWEL没有成功置位。
请多指教,谢谢!

使用特权

评论回复
9
wangch_sh|  楼主 | 2014-11-8 12:19 | 只看该作者
好啦!
XWrite_eeprom(0x10,0x00);//去除写保护
把这句去掉就好啦。画蛇添足

使用特权

评论回复
10
wangch_sh|  楼主 | 2014-11-8 12:21 | 只看该作者
我搞不懂。

使用特权

评论回复
11
wangch_sh|  楼主 | 2014-11-8 12:23 | 只看该作者
这个寄存器不是保护块禁止写入吗?
那为什么我都写0,不保护时写不进去?
不清零,保护反而可以写进去了呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

318

主题

2817

帖子

5

粉丝