在51单片机的定时器0中断函数中用retun是不是跳出中断程序啊?请大侠帮忙指教,谢谢1

[复制链接]
4523|13
 楼主| kuaile1986sbj 发表于 2013-6-10 15:29 | 显示全部楼层 |阅读模式
void  led_flash_and_scroll() interrupt 1
{
      if(++k<35)  return ;
      k=0;
      switch(i)
       {
           case 0: B1=~B1;break;
           case 1: G1=~G1;break;
           case 2: R1=~R1;break;
           case 3: Y1=~Y1;break ;
            default:i=0;
        }
    if(++j<300) return;
    j=0;
    P0=0xff;
    i++;
}
NE5532 发表于 2013-6-10 18:26 | 显示全部楼层
是。c编译器自动生成退出中断的代码。
肖恩till 发表于 2013-6-10 20:50 | 显示全部楼层
return成立   就会跳出这个中断啦
ballack_linux 发表于 2013-6-10 20:54 | 显示全部楼层
按语法来说函数返回值为void型的 函数体内不能出现return语句
NE5532 发表于 2013-6-10 22:06 | 显示全部楼层
ballack_linux 发表于 2013-6-10 20:54
按语法来说函数返回值为void型的 函数体内不能出现return语句

是不能return变量或立即数,return是随时允许滴。

评分

参与人数 1威望 +1 收起 理由
xyz549040622 + 1

查看全部评分

ballack_linux 发表于 2013-6-11 15:24 | 显示全部楼层
NE5532 发表于 2013-6-10 22:06
是不能return变量或立即数,return是随时允许滴。

呵呵 是这样的吗 我那是谭浩强先生书里的原话哈  
NE5532 发表于 2013-6-11 16:06 | 显示全部楼层
ballack_linux 发表于 2013-6-11 15:24
呵呵 是这样的吗 我那是谭浩强先生书里的原话哈

哦?多少页呢,我去看看。不过谭浩强前辈是没有搞单片机的。
pangencao 发表于 2013-6-12 15:18 | 显示全部楼层
return 为调到函数尾部,之后该咋处理还咋处理。
ayb_ice 发表于 2013-6-13 08:15 | 显示全部楼层
是返回不是跳出
杨爱林林 发表于 2013-6-13 08:23 | 显示全部楼层
return 是随时可以出现的
本意就是结束函数
dirtwillfly 发表于 2013-6-14 08:32 | 显示全部楼层
第一次见这种用法,学习了。
一般情况都是让中断里的程序尽量的短,不是必须放在中断里的语句尽量都放在外面
成全1309 发表于 2013-6-15 08:18 | 显示全部楼层
貌似有人说返回,有人说跳出啊。。好吧帮顶一个,等大神求解
study1234 发表于 2013-6-15 12:41 | 显示全部楼层
return 就是返回
在普通的函数里面就是函数退出。可以带返回值
在中断函数里面也是退出中断函数 ,当然条件是这一层就是中断函数。如果是中断函数调用的函数退出则只是返回。

其实可以这样理解:
不管函数里面有几个return或者一个return也没。普通函数或者中断函数都有一个出口。
当然这两个出口是有所区别的。对51,除了堆栈操作外,可以理解成ret和reti的区别。

return就是到那个出口的地方

评分

参与人数 1威望 +1 收起 理由
xyz549040622 + 1

查看全部评分

943096020 发表于 2013-6-26 13:00 | 显示全部楼层
学学习习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部