微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > ds1302时钟芯片的问题

ds1302时钟芯片的问题

时间:10-02 整理:3721RD 点击:
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
void clockadjust()  //调节设置
{
        if(key==0)                //如果按键按下,时钟状态取反
        {
                delay_ds1302(5);
                if(key==0)
                {
                        flag++;
                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据
                        while(!key);        
                }
        }        
        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟
        {        
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快
                write_ds1302(write_sec,dat|0x80);  
    write_ds1302(0x8e,0x80);        //加写保护        
        }        
        if(flag==1)                   //秒调节
        {
                tt.sec=read_ds1302(read_sec);
                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
                if(add==0)            //按键,加一     
                {
                        delay_ds1302(5);
                        if(add==0)
                        {
                                tt.sec++;
                                if(tt.sec==60)
                                        tt.sec=0;
                                tt.sec=tt.sec/10*16+tt.sec%10;
                                write_ds1302(0x8e,0);        //去除写保护
                                write_ds1302(write_sec,tt.sec|0x80);
                                write_ds1302(0x8e,0x80);        //加写保护
                                while(!add);
                        }
                }
                if(sub==0) //按键,减一
                {
                        delay_ds1302(5);
                        if(sub==0)
                        {
                                --tt.sec;
                                if(tt.sec==-1)
                                        tt.sec=59;
                                tt.sec=tt.sec/10*16+tt.sec%10;
                                write_ds1302(0x8e,0);        //去除写保护
                                write_ds1302(write_sec,tt.sec);
                                write_ds1302(0x8e,0x80);        //加写保护
                                while(!sub);
                        }
               
                }
        }

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

网站地图

Top