打印

请问DS1302的按键调整/设定时钟程序怎么做?

[复制链接]
2373|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shangdi|  楼主 | 2009-8-4 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问DS1302的按键调整/设定时钟程序怎么做?说下方案,步骤或程序都行。

我做的时钟就是不能调整时间。本来程序里是让时钟停止了,显示也是停止的,但等退出调整状态时,显示它其实一直在走(中间并没有停止:比如显示停在5秒时,大概10秒后等我退出调整状态,它已经走到15秒了。)。

不知道哪里出问题了?请高手帮忙看看

/*************************时间调整,目前只调整秒***********/
void adj_time()
{
if(adj==0)
{
  delayMS(5);
  if(adj==0)
  {
   while(adj==0);
   flag++;
   if(flag==2)                        
   flag=0;
   tempBCD=rd_1302(0x81);
   Chalt=tempBCD|0x80;
   wr_1302(0x8e,0x00);//写允许
   wr_1302(0x80,Chalt);//时钟停止
   wr_1302(0x8e,0x80);//写保护
  }
}
if(flag==0)
{
  Cstart=rd_1302(0x81)&0x7f;
   wr_1302(0x8e,0x00);//写允许
   wr_1302(0x80,Cstart);//时钟启动
   wr_1302(0x8e,0x80);//写保护
   dis1602_1302();//读取1302中时间并显示在1602上
}
if(flag==1)
{
  wr_comd1602(0x80+0x40+8);
  wr_comd1602(0x0f);
  tempbinary=((tempBCD&0x70)>>4)*10+(tempBCD&0X0F);
  if(inc==0)
  {
   delayMS(5);
    if(inc==0)
    {
     tempbinary++;
     if(tempbinary==60)
      tempbinary=0;
     while(inc==0);
     dis_tim1602(0x40+7,tempbinary);
     wr_1302(0x80,((tempbinary/10)<<4)+(tempbinary%10));
    }
  }
}
}
/************************主函数********************/
void main()
{
init();
while(1)
{  
  adj_time();
}
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝