这段时候改个程序遇到个很奇怪的问题,在中 断中我明明把命令字置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;
}}
}
希望各位高手帮我看下
{
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;
}}
}
希望各位高手帮我看下
解决方案 »
- 图像切割~~~~~~~
- 如何做一个可以编辑位图像素的控件?
- TO我的合作伙伴
- 谁有用nero sdk刻录光盘的例子,高分奉献,不够在加
- 问个困惑了很久的GDI+的问题
- CursorLocation设置不同引起move方法错误!急呀!!!!
- 关于微软串口控件问题,很奇怪,VC Debug版本没有问题, Release版本就出错.
- [请问]如何用代码去读取图片文件头或其他信息?
- 为何不能打开USB口??
- 为什么我的动态SQL不能执行?
- 怎样快速简单将CString类型转换成Unicode支持的字符串,看我这个,我用的是vs2003.net
- 急!那位大师能帮忙,解决了把所有的分给你!取xml内的一个片段,不是属性值
volatile int CmdValid;
谢谢各位!大家说的方法都很好,对我有很大帮助