如何让正在运行单片机程序暂停:就比如一个流水灯程序,主函数是几个动画效果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();
}
}
中断函数未改动!!!暂停功能无法实现。
此思路是否正确?如果再用一个中断来处理那么又是怎样解决呢?请大神指点一二!!!
这是我在做光立方的的时候碰到的问题!!中断完整函数如下
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;
}
如此说来我上面的思路就是错误的了?必须得在开一个外部中断,但是在中断里面有如何让flash停下来呢
一周热门 更多>