打印
[51单片机]

关于单片机按键定时的问题

[复制链接]
589|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MOMO2333|  楼主 | 2016-12-4 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想通过按键定时,并且到点后自动归0;
请问为什么按下Confirm后数码管无显示,也无定时了

void main()
{
        while(1)//必须先等开关开启??
        {
        if(Open==0)//检查定时是否开启
        {
                delay(1000);//消抖
                if(Open==0)
                break;
        }
  }
       
        while(1)
        {
                         display();//点亮数码
                  if(Add==0)//检查定时时间是否+1
                        {
                                delay(1000);
                                for(;Add==0;i++)//??不能i=1;否则每次从1开始
                                {
                                 while(!Add);
                                 display();
                                 delay(1000);
                                }
                                }
                   if(Tidy==0)//检查是否清零
                        {
                                delay(1000);
                                if(Tidy==0)
                                        i=0;
                                display();//清空数码管
      }
                        if(Confirm==0)
                        {
                                delay(1000);
                                if(Confirm==0)
                                {
                                while(i)
                          start1();//定时器1初始化
              if(time>99)
               {
                       time=0;
                       second++;
                       if(second>59)
                        {
                               second=0;
                               minute++;
                       if(minute==i)
                              {
                                     minute=0;
                                     i=0;
                                     display();
                               }
                //con=0;
                }
        }
        }       
                        }
               
                //return        con;
                        }
                        }
//return 1;       



void timer1() interrupt 3
{
       

        TH1=0XD8;        //给定时器赋初值,定时10ms
        TL1=0XF0;       
        time++;
       
}

相关帖子

沙发
ningling_21| | 2016-12-5 12:03 | 只看该作者
程序结构混乱

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
MOMO2333 + 1 很给力!
板凳
MOMO2333|  楼主 | 2016-12-5 21:54 | 只看该作者
本帖最后由 MOMO2333 于 2016-12-5 22:01 编辑

   while(i)
                          start1();//定时器1初始化      我知道了,问题在这,我没弄清if 和 while 的区别,所以当i不等于0是一直在初始化定时器。 改成if 就行
谢谢您的指点,只不过我还是小白,目前还没有程序结构的概念。 还得努力,多学,多写
能否请您指点一下,这个程序结构为什么混乱,该怎么改呢?谢谢

使用特权

评论回复
地板
ningling_21| | 2016-12-6 08:29 | 只看该作者
MOMO2333 发表于 2016-12-5 21:54
while(i)
                          start1();//定时器1初始化      我知道了,问题在这,我没弄清if  ...

先画流程图,逻辑没问题后再写程序

使用特权

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

本版积分规则

8

主题

11

帖子

0

粉丝