菜鸟求助:如何让正在运行的单片机程序暂停

2019-07-16 02:19发布

  如何让正在运行单片机程序暂停:就比如一个流水灯程序,主函数是几个动画效果flash。程序段如下:
   void main()
{ init()   // 各种初始化
   while(1)
  {    flash_1();          
         flash_2();

         flash_3();

}
}
中断函数:void time() interrupt 1{.....}//往IO口送数据。

     但是现在我想加一个按键实现暂停效果:按键按下一次程序暂停保留当前效果(就是保留着哪盏灯亮哪盏灯不亮),单按键第二次按下从当前效果继续往下运行。下面是我修改后的代码,功能却无法实现,请各位大神指点一二

  uchar keyscan() {  
        if(key==0)
        { delay(50);
                if(key==0)
                {
                        keym++;
                        TR0=0;
                       
                        if(keym=1) button=0;
                        if(keym=2) button=1;
                        if(keym>2) keym=1;
                        while(!key);
                }
        }
                        else button=1;
                        return(button);
}
void main()
{ init()   // 各种初始化
   keyscan();
   while(button)
  {    flash_1();          
         flash_2();

         flash_3();

  }
}
   中断函数未改动!!!暂停功能无法实现。
   此思路是否正确?如果再用一个中断来处理那么又是怎样解决呢?请大神指点一二!!!





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
in发烧友ing
1楼-- · 2019-07-16 07:21
完整程序贴出来看看啊,不知道你中断怎么调用的
fpf888
2楼-- · 2019-07-16 09:40
中断嘛,就是停下当前做的事去做另一件事,当做完后接着之前的事继续运行,你就中断是把IO口的收据输出即可,这样不是暂停了吗?程序你在想想!
啊土
3楼-- · 2019-07-16 12:26
in发烧友ing 发表于 2013-3-3 13:17
完整程序贴出来看看啊,不知道你中断怎么调用的

这是我在做光立方的的时候碰到的问题!!中断完整函数如下
void time() interrupt 1

{

         uchar i;

         static uchar layer=0;

         P1=0;

         for (i=0;i<8;i++)

         {

                   P2=1<<i;

                   delay(3);

                   P0=display[layer];

                   delay(3);

         }

         P1=1<<layer;

         if (layer<7)

                   layer++;

         else

                   layer=0;

         TH0=0xc0;

         TL0=0;

}

hobbye501
4楼-- · 2019-07-16 14:26
 精彩回答 2  元偷偷看……
啊土
5楼-- · 2019-07-16 15:32
hobbye501 发表于 2013-3-3 13:44
想要暂停,一定要有个外部触发,这个触发是什么 就由你自己决定,这时候通常是进入中断处理服务函数,处理 ...

如此说来我上面的思路就是错误的了?必须得在开一个外部中断,但是在中断里面有如何让flash停下来呢
以柔克刚
6楼-- · 2019-07-16 21:20
学习了,谢谢

一周热门 更多>