DS1302 读出时间不正确,是什么原因?

2020-01-16 18:27发布

用STC12C 5412AD  芯片 12 M晶体,程序是用 公版程序,程序用于另一个板子(STC 12C5A62S2 4M)可以正常运行。


现像为:  FF 02 FF 09 05 11,FF 02 FF 05 59 最后一位,秒可以读出,最大变化到59 后,就变成7F, 其他位读出不对。

按理接线是对的,驱动也是对的! P1 口有AD转换,  只用P1.0,与P1.1用作AD。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
Eric_Xue
2020-01-17 23:10
本帖最后由 Eric_Xue 于 2017-1-12 08:53 编辑

LZ,试下,看是否能解决问题
uchar ds1302_read_byte(uchar addr) {

        uchar i,temp;        
        RST=1;                                        //此处RST 应该改为DS1302_CS
        addr = addr | 0x01;   
        // Send Addr
        for (i = 0; i < 8; i ++)
       {
                if (addr & 0x01) {
                        IO=1;
                }
                else {
                        IO=0;
                 }
                SCK=0;
                addr >>=  1;
                SCK=1;
     }        

        //Read Data
        for (i = 0; i < 8; i ++) {
               SCK=0;
                temp >>=  1;
                if (IO) {
                        temp |= 0x80;
                        }
                else {
                        temp &= 0x7F;
                        }
                SCK=1;

                }        
        RST=0;                                        //此处RST 应该改为DS1302_CS
        return temp;
}

一周热门 更多>