本帖最后由 lryxr2507 于 2013-3-14 16:20 编辑
求助大师:
遇到一台设备,有较多的感应器,每一个动作必须按顺序动作,每一次动作后必须感应到感应器信号后才能执行下一个动作,在这里就出现一个问题,在执行的过程中,如果需要终止动作回到初始状态,这时因为再等待感应点已进入死循环,无法终止程序,即使在中断里面强制执行了,但死循环后面的程序还在等待,无法完全退出.当然我用过break 等方法进行返回,可是当有很多动作时就麻烦了,怕执行过程中错开感应器.
例如:
if(run_flag) //运行标志开
{
A=0; //动作1执行
while(A_D); //等待1动作的下感应 请教各位:怎样较好地避免这种死循环
A=1; //动作1停止
while(A_U); //等待1动作的上感应
B=0; //动作2执行
while(B_A); //等待2动作的前感应
A=0; //动作3执行 ;与动作1相同
while(A_D); //等待3动作的下感应
A=1; //动作3停止
while(A_U); //等待3动作的上感应
B=1; //动作2停止
while(B_B); //等待2动作的后感应
........
run_flag=0; //关闭运行
''''''
}
请各位不吝赐教,表示感谢.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我觉得我的结构还行,我现在手里项目就用的它,不过还是提醒一下,程序里不要有阻塞的地方,比如for()这样的东东来执行循环延时,不然实时性不太好
一周热门 更多>