DS1302~时钟总时间是对的,但是秒显示不正常,不是规律的一秒变一次,几个快然后就小停顿一下,求高手~

/*****************************************************函数功能:根据命令字,向1302写一个字节数据入口参数:Cmd... /*****************************************************
函数功能:根据命令字,向1302写一个字节数据
入口参数:Cmd,储存命令字;dat,储存待写的数据
***************************************************/
void WriteSet1302(unsigned char Cmd,unsigned char dat)
{
RST=0; //禁止数据传递
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
delaynus(2); //稍微等待,使硬件做好准备
Write1302(Cmd); //写入命令字
Write1302(dat); //写数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
}
/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}
/*****************************************************
函数功能:根据命令字,从1302读取一个字节数据
入口参数:Cmd
***************************************************/
unsigned char ReadSet1302(unsigned char Cmd)
{
unsigned char dat;
RST=0; //拉低RST
SCLK=0; //确保写数居前SCLK被拉低
RST=1; //启动数据传输
Write1302(Cmd); //写入命令字
dat=Read1302(); //读出数据
SCLK=1; //将时钟电平置于已知状态
RST=0; //禁止数据传递
return dat; //将读出的数据返回
}
/**************************************************
函数功能:读取日历
***********************************/
void Read_RTC(void)
{
unsigned char i,*p,ReadV;
p=read_add;
for(i=0;i<7;i++)
{
ReadV=ReadSet1302(*p);
vary_date[i]=((ReadV&0x70)>>4)*10 + (ReadV&0x0F);
p++;
}
}
/***********************************************
函数功能:设置时钟
************************************/
void Set_RTC(void)
{
unsigned char i,*p,readv;
WriteSet1302(0x8e,0x00);
p=write_add;
for(i=0;i<7;i++)
{
readv=vary_date[i];
WriteSet1302(*p,((readv/10)<<4|(readv%10)));
p++;
}
WriteSet1302(0x8e,0x80);
}
展开
 我来答
yiweisky99
2011-04-14 · 超过22用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:57.3万
展开全部
你说总时间是对的,那秒也就是对的,可能是你读时间的频率不对,每隔几秒你漏读了一次,所以显示没有刷新,我用定时器做的,每隔一秒读一次DS1302,实际效果很好,每秒都会初刷新
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式