314613767 发表于 2012-7-13 21:09

哪位大虾帮我看看DS1302的程序,不能初始化

#define DS1302_C
#include "HEAD.H"


sbit DSRST=P1^7;//定影DS1302片选信号
sbit DSDIO=P1^6; //定义DS1302数据信号
sbit DSSCLK=P1^5;//定义DS1302时钟信号
sbit ACC_7=ACC^7;

void DS_Write(uchar addr,uchar dat)//DS1302的数据写时序
{
        uchar i,temp;
        DSRST=0;
        DSSCLK=0;
        DSRST=1;//数据传送开始信号
        for(i=0;i<8;i++)
        {
                DSSCLK=0;
                temp=addr;
                DSDIO=(bit)(temp&0x01);
                addr>>=1;
                DSSCLK=1;
        }
        for(i=0;i<8;i++)
        {
                DSSCLK=0;
                temp=dat;
                DSDIO=(bit)(temp&0x01);
                dat>>=1;
                DSSCLK=1;
        }
        DSRST=0;//数据传送终止信号       
}
uchar DS_Read(uchar addr)//DS1302读时序
{
        uchar dat1,dat2;
        uchar i,temp;
        DSRST=0;
        DSSCLK=0;
        DSRST=1;
        for(i=0;i<8;i++) //发送地址
        {
                DSSCLK=0;
                temp=addr;
                DSDIO=(bit)(temp&0x01);
                addr>>=1;
                DSSCLK=1;
        }
        for(i=0;i<8;i++)//读取数据
        {
                ACC_7=DSDIO;
                DSSCLK=1;
                ACC>>=1;
                DSSCLK=0;
        }
        DSRST=0;

    dat1=ACC; //数据进制转换,十六进制转十进制
        dat2=dat1/16;
        dat1=dat1%16;
        dat1=dat1+dat2*10;
        return (dat1);
}
void DS_Init()//DS1302初始化
{
        DS_Write(Write_WP,0x00);//WP=0;允许写
        DS_Write(Write_Second,0x56);//初始化秒
        DS_Write(Write_Minute,0x34);//分
        DS_Write(Write_Hour,0x12);        //时
        DS_Write(Write_WP,0x80);//禁止写       
}
void main()
{
        DS_Init();
        while(1)
        {
                uchar Hour,Minute,Second;
                Hour=DS_Read(Read_Hour);        //读取DS1302中的时钟数据
                Minute=DS_Read(Read_Minute);
                Second=DS_Read(Read_Second);
                display(Hour,Minute,Second); //数码显示时钟
        }
}
程序如上,无法设置时间。我的显示程序我测试过 正常显示...

314613767 发表于 2012-7-14 21:44

没人回答吗???

314613767 发表于 2012-7-14 21:50

查了很多资料,刚刚又试着把程序烧进去,又发现可以运行...狂晕!!!

sky007p 发表于 2012-7-14 22:03

不懂。

314613767 发表于 2012-7-14 23:03

我昨天把程序烧进步去,能显示。但是不会走。。。

进口元器件IC 发表于 2012-7-15 01:37

回复 3# 314613767


   :handshake 核对下数据回复或定时提取编程的程序
页: [1]
查看完整版本: 哪位大虾帮我看看DS1302的程序,不能初始化