如果接到0XAA 时可以进入大循环,但接到0X55时,不能跳出停止大循环,不知是何原因?请老师们指点,谢谢!
void main()
{
init();
while(1)
{
if(dat==0x55)
{
break;
}
else if(dat==0xaa)
{
while(1)
{
led=0;
delay_s(100);
led=1;
delay_s(100);
}
}
}
}
void ser() interrupt 4
{
if(RI)
{
RI = 0;
dat = SBUF;
switch(dat)
{
case 0x11:
led = 0;
break;
case 0x12:
led = 1;
break;
}
}
}
但是我怎样才能跳出闪灯循环呢?比如:接到0XAA时进入闪灯不断循环,如果接收到0X55时就跳出进行中的循环灯熄灭,只有再次接到0XAA又进入闪灯不断循环?
追答按我上面给你改的main()就行了啊。
追问是否把
if(dat==0x55)
{
break;
}
放在while(1)里面呢?才能实现收到0X55就跳出循环呢?
如果:收到指令0XAA就闪,收到指令0X55就不闪,其他指令保持当前状态不变,那么:
int flag;
void main()
{
init();
while(1)
{
if(flag)
{
led=0;
delay_s(100);
led=1;
delay_s(100);
}}}
void ser() interrupt 4
{
if(RI)
{
RI = 0;
dat = SBUF;
switch(dat)
{
case 0x11:
led = 0;
flag=0;
break;
case 0x12:
led = 1;
flag=0;
break;
case 0xaa:
flag = 1;
break;
case 0x55:
flag = 0;
break;
}}}
如果你的 init(),delay_s()没有问题的话,以上程序应该可以实现功能的。