哪位大虾帮我看看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); //数码显示时钟
}
}
程序如上,无法设置时间。我的显示程序我测试过 正常显示... 没人回答吗??? 查了很多资料,刚刚又试着把程序烧进去,又发现可以运行...狂晕!!! 不懂。 我昨天把程序烧进步去,能显示。但是不会走。。。 回复 3# 314613767
:handshake 核对下数据回复或定时提取编程的程序
页:
[1]