当前位置: 代码迷 >> 单片机 >> 怪现象:keil中return跳不出函数,还在本函数执行解决思路
  详细解决方案

怪现象:keil中return跳不出函数,还在本函数执行解决思路

热度:142   发布时间:2016-04-28 16:20:01.0
怪现象: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:[email protected]

thanks   for   your   email   and   call

------解决方案--------------------
感觉,一个中断里做的事情还是太多了...

另外,事件的处理尽可能用状态机来描述逻辑关系,这样就不乱了

关于状态机的思路,你可以去看一下编译原理,里面有很详细的阐述.

<现代编译原理--C语言描述> 作者:ANDREW W.APPEL 译者:赵克佳,黄春,沈志学.人民邮电出版社

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