关于RX8025t的问题

wangjianqun 2016-06-18 11:01:53
用8025T做一个时钟,IIC是模拟的,现在有个问题,读写都可以,但是读出的第一个数据不是秒,而是分钟,整体往后串了一个数据,非常不解,查了很多遍程序都没发现问题,请大家帮忙看看,哪里出问题了呢?
bit v_W8025_all(unsigned int sub_addr,unsigned char *s,unsigned char no) //写入
{

uchar i;
bit flag=1;
start(); /*发送启动信号*/
sendbyte(0x64); /*发送SLA+W*///0x64
if(ACK_flagr==0)
flag=0;
sendbyte(sub_addr); //0x01
if(ACK_flagr==0)
flag=0;
for(i=0;i<no;i++)
{
sendbyte(*s);
if(ACK_flagr==0)flag=0;
s++;
}
stop();
return (flag);
}
bit v_Get8025(unsigned int sub_addr,unsigned char *s,unsigned char no) //读数
{

uchar i;
bit flag=1;
start();
sendbyte(0x65);//0x65
if(ACK_flagr==0)
flag=0;
sendbyte(sub_addr);//0x04//快速模式读取
if(ACK_flagr==0)
flag=0;
for(i=0;i<no-1;i++)
{
*s=recbyte();
ackr();
s++;
}
*s= recbyte();
noackr();
stop();
return(flag);
}
bit init_8025(void) //初始化,24小时制
{
bit flag=1;
start();
sendbyte(0x64); /*发送SLA+W*/
if(ACK_flagr==0)
flag=0;
sendbyte(0xe0);//第一个控制寄存器,设置为24进制
if(ACK_flagr==0)
flag=0;
sendbyte(0x20);
if(ACK_flagr==0)
flag=0;
stop();
return (flag);
}

...全文
1241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MC石头 2019-02-26
  • 打赏
  • 举报
回复
我遇到的也是这个问题,头两个字节读到的是分钟和小时。而且8421码转换的高四位不对。也是醉了。

不过我还没有详细去抓波形,要有逻辑分析仪就好了。后悔死了,手头有NXP的PCA2129非得去选这个IC。
u010189921 2017-10-25
  • 打赏
  • 举报
回复
楼主这个问题最后解决了没,我也遇到这样的问题
wangjianqun 2016-06-18
  • 打赏
  • 举报
回复
最后一个数据读出的是32,不知道这个是怎么来的
wangjianqun 2016-06-18
  • 打赏
  • 举报
回复
以下是发送和接受一个字节的函数 void sendbyte(unsigned char senddata) { unsigned char i; for(i=0;i<8;i++) { sdar=(bit)(senddata&0x80); /*取最高位*/ senddata=senddata<<1; _Nop(); sclr=1; _Nop();_Nop(); sclr=0; _Nop();_Nop(); } ackr(); _Nop(); _Nop(); if(sdar==1) { ACK_flagr=0; //数据发送错误 } else { ACK_flagr=1; //数据发送正确 } } uchar recbyte(void) { uchar i; uchar recdata=0;//接受到的数据 sdar=1; _Nop(); for(i=0;i<8;i++) { sclr=1; _Nop(); recdata=recdata<<1; if(sdar==1) { recdata++; _Nop(); _Nop(); } sclr=0; _Nop();_Nop(); } return(recdata); }

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧