读书人

怪现象:keil中return跳不出函数还在

发布时间: 2012-03-18 13:55:39 作者: rapoo

怪现象: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 译者:赵克佳,黄春,沈志学.人民邮电出版社

用状态机是对底层事务状态描述相当漂亮的工具.嘿嘿

读书人网 >单片机

热点推荐