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

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条回答
啊土
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;

}

一周热门 更多>