打印

C51中断子程序中能否使用return

[复制链接]
楼主: 864
手机看帖
扫描二维码
随时随地手机跟帖
21
xwj| | 2009-10-15 16:39 | 只看该作者 回帖奖励 |倒序浏览
中断中,不管你是return 萝卜;还是return 白菜;
都没用的。

参数直接丢弃或者编译报错;然后,跳到最后一个括号处,执行隐藏的恢复现场、RETI

使用特权

评论回复
22
xwj| | 2009-10-15 16:40 | 只看该作者
10楼是对的,一般编译器也都会这样子设计

不是隐藏的默认的“return”。编译器在编译一个普通的C51函数的时候,会在函数的结尾处生成RET指令,而编译C51的中断服务函数的时候,会在结尾处生成RETI指令。可以理解为,那个结束的大括号就是告诉编译器这个函数 ...
arm_fan168 发表于 2009-10-15 15:33

使用特权

评论回复
23
acmilann| | 2009-10-15 16:42 | 只看该作者
可以用,我当go语句用,可以直接退出中断。

使用特权

评论回复
24
864|  楼主 | 2009-10-15 16:49 | 只看该作者
21# xwj
谢谢,我想bhsdlmj的意思应该是普通函数里

使用特权

评论回复
25
864|  楼主 | 2009-10-15 16:49 | 只看该作者
23# acmilann
好 谢谢

使用特权

评论回复
26
wudilong| | 2009-10-15 16:51 | 只看该作者
第一次来发现这个论坛大家好热情啊

使用特权

评论回复
27
864|  楼主 | 2009-10-15 16:55 | 只看该作者
26# wudilong
的确很热情 切身体会啊

使用特权

评论回复
28
computer00| | 2009-10-15 17:17 | 只看该作者
可以在函数内部的任何一个地方return的,包括C51的中断函数。你觉得到某个地方需要退出该函数时,写上return即可。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
bhsdlmj + 1
29
bhsdlmj| | 2009-10-15 17:22 | 只看该作者
;P

使用特权

评论回复
30
864|  楼主 | 2009-10-15 18:41 | 只看该作者
28# computer00
好 谢谢 好心人真多啊

使用特权

评论回复
31
openmake| | 2009-10-15 19:35 | 只看该作者
应该可以吧

使用特权

评论回复
32
xuezhongaozhu| | 2009-10-15 20:00 | 只看该作者
如果在中断程序语句之间加return,就是退出中断的意思,退出中断这个函数;如果在中断程序末尾加return,那几乎一点作用都没有,加不加也没什么影响,除非定义的中断函数还有其它特殊用途,return可以返回一个控制。
中断子程序也只不过是一个函数而已,只是有特殊意义。

使用特权

评论回复
33
huangqi412| | 2009-10-15 20:19 | 只看该作者
圈圈成ufo了。。。

使用特权

评论回复
34
原野之狼| | 2009-10-15 22:48 | 只看该作者
return一定要放在最后一行,没有这个说法!
放哪行都行。

使用特权

评论回复
35
虾军师| | 2009-10-16 09:39 | 只看该作者
假设在中断服务程序中有某个条件达到了需要退出中断
我一般这样写:
void *****()
{
……
……
if(条件符合)
{
goto loop;
}
……
……
loop:
}

使用特权

评论回复
36
李冬发| | 2009-10-16 10:02 | 只看该作者
为什么不试一下呢,很难有试得条件吗?

使用特权

评论回复
37
xwj| | 2009-10-16 10:06 | 只看该作者
羡慕,圈圈牌ufo一出现就有人加分

使用特权

评论回复
38
zq1987731| | 2009-10-16 10:11 | 只看该作者
当然可用,估计是好多人根深蒂固的思想认为"void"返回类型是不允许用return的:L
void XXX(void)
{
    if(条件1)
    {
        执行语句1;  
        return;
    }
    else if(条件2)
    {
        执行语句2;
        return;
    }
    else
    {
         执行语句3;
        return;
    }
}

使用特权

评论回复
39
xwj| | 2009-10-16 10:14 | 只看该作者
汗~

估计没人这么认为吧?

使用特权

评论回复
40
HWM| | 2009-10-16 10:21 | 只看该作者
return的“语义”会跟随具体的“函数类别”(包括ISR)变化地。

使用特权

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

本版积分规则