DS1302时钟芯片不能读取数据

2019-07-16 02:24发布

本帖最后由 hegspring 于 2013-2-25 11:04 编辑

用Keil单步运行程序时,往DS1302里写数据正常,但是读数据时IO口一直保持高电平不变,主要代码如下:



求助!!!  在线等……QQ:137223811



#include "reg51.h"
#include "intrins.h"

sbit rst=P2^5;
sbit sck=P2^6;
sbit io=P2^7;
sbit acc7=ACC^7;

typedef unsigned char   uchar;
typedef unsigned int    uint;

void write_ds1302_byte(uchar dat)
{
        uchar i;        
        for(i=8;i>0;i--)
        {
                sck=0;               
                io=dat&0x01;
                dat=dat>>1;
                sck=1;
        }
}
/*写多字节到DS1302*/
void write_ds1302(uchar add,uchar dat)
{
        rst=0;
        _nop_();
        sck=0;_nop_();
        rst=1;_nop_();
        write_ds1302_byte(add);
        write_ds1302_byte(dat);
        rst=0;_nop_();
        io=1;
        sck=1;
        
}
/*读DS1302的1Byte*/
uchar read_ds1302(uchar add)
{
        uchar i;
        rst=0;
        _nop_();
        sck=0;
        _nop_();
        rst=1;
        _nop_();
        write_ds1302_byte(add);
        
        for(i=0;i<8;i++)
        {
                                
                sck=1;
                sck=0;
               
               
               
                acc7=io;
                ACC>>=1;
        }
        rst=0;
        _nop_();
        sck=0;
        _nop_();
        sck=1;
        io=1;
        ACC=(ACC/16*10)+ACC%16;
        return ACC;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
yatoo
1楼-- · 2019-07-16 03:49
 精彩回答 2  元偷偷看……
hegspring
2楼-- · 2019-07-16 05:42
yatoo 发表于 2013-2-25 10:45
http://bbs.elecfans.com/jishu_295866_1_1.html

还是不行呃

一周热门 更多>