打印

中断提前返回,用什么指令?(C语言)

[复制链接]
3753|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
促狭鬼|  楼主 | 2007-5-9 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用汇编的话,函数返回用ret和reti区别。
但用C写的话,都是大括号或return结束该函数.
怎么提前结束中断函数呢?比如
普通函数:
void fun1(void)
{
    if(A) return;
    fun2();
    fun3();
    ...
}
用AVR单片机为例:
#pragma vector=INT1_vect
__interrupt void EXT_INT1(void)  
{
    if(B)
    {
         funtion_1();
         if(C)
         {
                funtion_2();
                funtion_3();
                if(D)
                {
                     ...
                }
         }
    }    
}
如果能直接写成:
#pragma vector=INT1_vect
__interrupt void EXT_INT1(void)  
{
    if(!B) return;        //假设的,俺没敢用return直接结束该中断函数
    funtion_1();
    if(!C) return;    //假设的
    funtion_2();
    funtion_3();
    if(D)
    {
       ...
    }
}

勉去漏写大括号的错误和简洁视觉上的阅读
大家有没有什么好的心得?我现在是老老实实写括号的

相关帖子

沙发
IC1008| | 2007-5-9 14:30 | 只看该作者

就return吧 哈哈

使用特权

评论回复
板凳
促狭鬼|  楼主 | 2007-5-9 14:36 | 只看该作者

楼上的你确认?

你在真实的产品里这样用过吗?

使用特权

评论回复
地板
音乐乐乐| | 2007-5-9 15:15 | 只看该作者

晕,当然是return了,编译器会改成RETI的

使用特权

评论回复
5
computer00| | 2007-5-9 15:38 | 只看该作者

哈哈~~~编译器才不会像楼主那么笨呢~~~~~

使用特权

评论回复
6
促狭鬼|  楼主 | 2007-5-9 15:42 | 只看该作者

呵呵,真的吗?

那谢谢大家啊!

使用特权

评论回复
7
fushaobing| | 2007-5-9 21:18 | 只看该作者

楼主多虑了

其实编译器就是按你的想法去执行的。

使用特权

评论回复
8
oyggj| | 2007-5-9 21:52 | 只看该作者

有道理

呵呵,

使用特权

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

本版积分规则

12

主题

213

帖子

1

粉丝