[51单片机] 再问ISL12026的问题

[复制链接]
1582|10
 楼主| wangch_sh 发表于 2014-11-8 09:34 | 显示全部楼层 |阅读模式
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);//去除写保护
 楼主| 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
 楼主| 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
ningling_21 发表于 2014-11-8 11:58 | 显示全部楼层
wangch_sh 发表于 2014-11-8 11:18
不行哎。
我的程序
XWrite_eeprom(0x10,0x00);//去除写保护

写使能是对Status 寄存器的操作,0x10是哪个寄存器?
 楼主| wangch_sh 发表于 2014-11-8 12:05 | 显示全部楼层
BL1寄存器。
你说的写使能是RWEL和WEL吗?
我有写:
XWrite_eeprom(0x3F,0x02);
               
            XWrite_eeprom(0x3F,0x06);
不过有问题:
我写完后,读SR寄存器:
值为2,也就是说RWEL没有成功置位。
请多指教,谢谢!
 楼主| wangch_sh 发表于 2014-11-8 12:19 | 显示全部楼层
好啦!
XWrite_eeprom(0x10,0x00);//去除写保护
把这句去掉就好啦。画蛇添足
 楼主| wangch_sh 发表于 2014-11-8 12:21 | 显示全部楼层
我搞不懂。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| wangch_sh 发表于 2014-11-8 12:23 | 显示全部楼层
这个寄存器不是保护块禁止写入吗?
那为什么我都写0,不保护时写不进去?
不清零,保护反而可以写进去了呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

318

主题

2817

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部