怪现象:keil中return跳不出函数,还在本函数执行
不知道有哪位仁兄遇到这种情况:
在keil单步调试中,c51语言的return;居然跳不出函数 而是跳到本语句以下的10多行(该语句还属于本函数)去执行,并且执行一句后就跳出来了。
例如:
void function1(uchar i)
{
i=0x00; //第一步
if(i==0x00) //第二步
{
i+=10; //3
fuction2(); //4
return;
}
else if(i==0x01)
{
fuction3();
return;
}
....
else if(i==0x0a)
{
fuction2(); //5
return;
}
} //6
顺序大概如上面那么怪的!
若哪位仁兄有兴趣帮我克服这个怪现象(对于我来说是怪现象),就联系我吧 QQ:376967502
email:StudyBoy_3w@163.com
thanks for your email and call
[解决办法]
感觉,一个中断里做的事情还是太多了...
另外,事件的处理尽可能用状态机来描述逻辑关系,这样就不乱了
关于状态机的思路,你可以去看一下编译原理,里面有很详细的阐述.
<现代编译原理--C语言描述> 作者:ANDREW W.APPEL 译者:赵克佳,黄春,沈志学.人民邮电出版社
用状态机是对底层事务状态描述相当漂亮的工具.嘿嘿