再次请教DS1302的问题--有源代码

[复制链接]
2763|9
 楼主| ky_21ic 发表于 2008-12-9 10:26 | 显示全部楼层 |阅读模式
结贴:买到坏的芯片!!
救火车 发表于 2008-12-9 19:03 | 显示全部楼层

不看你的程序了,读时间的时候操作2次吧。

以前也遇到过这个问题,23:59以后,程序不是0点,还是偶尔发现的这个现象,当时着急项目,读的时候操作两次,就把这个问题避免了。 
xhtxzxw 发表于 2008-12-10 00:15 | 显示全部楼层

嘿嘿

俺和火车有同样的经历!!!
在程序里,凡是读1302的时间日期寄存器,连续写两条一样的读语句.呵呵
 楼主| ky_21ic 发表于 2008-12-11 22:45 | 显示全部楼层

回三楼

现在找打什么原因了吗???
xhtxzxw 发表于 2008-12-11 22:57 | 显示全部楼层

嘿嘿

没有,就一直这么用着呢!
 楼主| ky_21ic 发表于 2008-12-12 08:19 | 显示全部楼层

还是不行啊。。。

ReadTime();我也写了两次了,怎么还是不行啊???
极度郁闷啊!!!!!!!!!!!!!!!
救火车 发表于 2008-12-12 08:45 | 显示全部楼层

呵呵。看来3楼和我一样懒啊。

楼主,你在两次读取之间加一个延时, 1秒的吧。  具体的我还记得不太清楚了。你可以试试。。。
 楼主| ky_21ic 发表于 2008-12-12 09:14 | 显示全部楼层

回七楼

还是不行啊。。。。。
我怀疑是程序的问题,可能是16进制与10进制,数字与字符之间的问题???????????
哎,实在是不知道怎么办了!!!!!!!
gavin_he 发表于 2008-12-12 09:55 | 显示全部楼层

不要使劲读,改成0.5S读一次, 试一下看看

奇门遁甲 发表于 2008-12-12 11:08 | 显示全部楼层

re

void displaypulsenum(int num)
有问题吧
keil c51整型变量长度才16位,何来shiwan
读不要那么频繁,
我用如下方法减少读的频率

void ReadTime()
{
    static uchar second_old=0;     //秒变化再读
       uchar i,addr;          
       
       if(second_old==Read(0x81))          //秒没有变化,不需要继续读
               return;
      do{
            addr = 0x81;
              for(i=0;i<7;i++){        
                  Time1=Read(addr);
                   addr+=2;
              }
     }while(Time1[0]!=Read(0x81))          //读的过程,秒也发生了变化,重新读所有需要的时间值

    second_old=Time1[0];               //保存新的秒值

}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

211

帖子

1

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