这段时候改个程序遇到个很奇怪的问题,在中 断中我明明把命令字置1了,但是在main程序里面却进不了 if(CmdValid)这个条件判断语句里面。请问各位高手是什么原因啊?我是新手,实在是不知道为什么啊?!在此谢谢各位啦!void main(void)
{
char idata status;init();init_serialcomm();status = M500PcdConfig(); Idle_init(); //Initialize and prepare for Idle subroutine processwhile(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; 
}}
}
希望各位高手帮我看下