打印
[AVR单片机]

实在没辙了,来这里求教

[复制链接]
2117|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dmcz|  楼主 | 2007-11-23 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void fun1(void){
if(bExit)
    return;
else
    fun2();
}

void fun2(void){
if(bExit)
    return;
else
    fun1();
}
void main(void){
fun1();
while(1);
}
程序运行的时候函数A会不停的调用函数B,这样会不停的嵌套,如果想让在bExit=1的时候马上退出这两个函数而不用一级一级的出栈,或者有没有一个绝对跳转指令,该如何实现呢?

相关帖子

沙发
农民讲习所| | 2007-11-23 11:33 | 只看该作者

程序做到这个份上可够惨的

如果是DOS下,setjmp longjmp配对使用。

使用特权

评论回复
板凳
dmcz|  楼主 | 2007-11-23 12:27 | 只看该作者

呵呵,是挺惨的,忘记说清楚了用的是MEGA16,ICCAVR

使用特权

评论回复
地板
工作狂人| | 2007-11-23 12:37 | 只看该作者

re:

为什么要这么做呢? 算法是不是有问题?

使用特权

评论回复
5
brotherwen| | 2007-11-23 12:48 | 只看该作者

RE

这个算法超不好,不知为何

使用特权

评论回复
6
虾虫| | 2007-11-23 13:40 | 只看该作者

除非你自己计算每一层占用的栈,然后自己控制栈释放并返

除非你自己计算每一层占用的栈,然后自己控制栈释放并返回。

使用特权

评论回复
7
hotpower| | 2007-11-26 03:37 | 只看该作者

把自己绕进去了~~~

使用特权

评论回复
8
84335262| | 2007-11-26 23:56 | 只看该作者

乱聊:

在每一个子程序开始前栈先出来四个,把里面两个丢掉外面两个保存,再进行判断,就可以做到了,不过要增加子程序的长度……

使用特权

评论回复
9
people12| | 2007-12-3 15:04 | 只看该作者

!!!!

你可造拉单片机----死机!!
你还是在来个子程序进行对比bExit=1的时候在提供调用A

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝