程序如下,要实现的功能是:当单片机收到3时,执行led1和led2交替闪烁的现象;当收到1或者2时执行其他led的其他状态。
问题是:在执行led1和led2交替闪烁的现象时如果收到1或者2,有时不能立刻改变到1或者2状态,好像还需要等待延时以及程序完检测while(!RI)后才能退出再进入1或2状态。
不知道具体是怎样的原理?想实现各种状态立刻改变最好应该怎么做呢?把延时函数用成定时器吗?
void commIntProc() interrupt 4
{
if(RI)
{
RI = 0;
flag = SBUF;
if(flag=='1')
……
if(flag=='2')
{
led3=0;
}
if(flag=='3')
{
while(!RI)
{
led1=0;
led2=1;
delay(4000);
led1=1;
led2=0;
delay(4000);
}
}
}
} |