微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > DS1302时钟芯片不能读取数据

DS1302时钟芯片不能读取数据

时间:10-02 整理:3721RD 点击:

用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;
}

http://bbs.elecfans.com/jishu_295866_1_1.html

还是不行呃

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top