IF语句条件满足却进不去
这段时候改个程序遇到个很奇怪的问题,在中 断中我明明把命令字置1了,但是在main程序里面却进不了 if(CmdValid)这个条件判断语句里面。请问各位高手是什么原因啊?我是新手,实在是不知道为什么啊?!在此谢谢各位啦!
void main(void)
{
char idata status;
init();
init_serialcomm();
status = M500PcdConfig();
Idle_init(); //Initialize and prepare for Idle subroutine process
while(1)
{ TOGGLE_WD();
if(CmdValid) 这里老进不去
{
LED(OFF);
Tdelay_10ms(10);
LED(ON);
cmdexecution();
CmdValid = FALSE;
Idle=FALSE;
else 发送串数据返回是01后但是程序还是跑到这来了
{
LED(OFF);
Tdelay_10ms(30);
LED(ON);
Tdelay_10ms(10);
}
}
}void com_UART(void) interrupt 4 using 1
{
unsigned char idata chek,c;
TOGGLE_WD();
if(RI)
{
c=SBUF;
RI=0;
oldstate=nowstate;
nowstate=0;
switch(oldstate)
{
case 0:
if(c==0xAB)
{
TIME_OUT=50;
chek=c;
nowstate=1;
break;
}
else
{
nowstate=0;
break;
}
case 1:
if(c<=0x2f&&c>=0x20)
{
TIME_OUT=50;
REBuffer[0]=c;
chek^=c;
nowstate=2;
}
else
{
nowstate=0;}
break;
case 2:
TIME_OUT=50;
REBuffer[1]=c;
chek^=c;
nowstate=3;
index=0;
break;
case 3:
TIME_OUT=50;
if(index {
REBuffer[2+index]=c;
chek^=c;
index++;
nowstate=3;
break;
}
if(c==chek)
{
CmdValid=1; 这里在串口调试器上看到是01
SBUF=CmdValid;
while(!TI);
TI=0;
}
else
{
SBUF=0xFF;
CmdValid=0;
while(!TI);
TI=0;
}
break;
default: break;
}
}
if(TI&&!RI)
{
TI=0;
chek=0;
index=0;
}
}
}
希望各位高手帮我看下