51单片机外部中断里“return”到底有没有用, 100

#include"reg52.h"typedefunsignedcharu8;typedefunsignedintu16;sbitNEC=P3^2;sbitLED=P2^... #include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit NEC=P3^2;
sbit LED=P2^0;
sbit LED1=P2^1;

void delay(u16 i)
{
while(i--); //10us间隔延时

}

void int0cfg()
{
IT0=1;
EX0=1;
EA=1;
}

void uartcfg()
{

TMOD=0x20;
TH1=0xF9;
TL1=0xF9;
PCON=0x80;
TR1=1;
SCON=0x50;
ES=1;
EA=1;
}

void main()
{
int0cfg();
uartcfg();
while(1)
{
}
}
void intr0() interrupt 0
{

if(NEC==0)
{
u8 a;
a=0;
while(!NEC)
{
delay(10);
a++;
}
if((a<80)|(a>100))
{
LED=0;
return;
}
LED1=0;

}

}
程序是红外进入外部中断,为什么LED和LED1都可以点亮,既然LED点亮了说明进入if循环,再往下执行就return了,为什么if后面的LED1还会点亮,真是不解,盼望大神指点迷津,先谢过了
展开
 我来答
业梦旋Yk
2017-03-01 · TA获得超过240个赞
知道答主
回答量:262
采纳率:0%
帮助的人:39.8万
展开全部
可以的。没有所谓的提前结束。一段程序完成它的功能之后就是要结束呀!你的疑惑我猜应该是某个程序的分支末尾是否可以用return 来结束中断服务吧。这个肯定没有问题的。
追问
我的意思是,见我附上的代码,既然执行了if里的语句return必然也被执行了,这时候程序就该终止了,实际上为什么if语句后面的LED1=0还是会被执行
HH2O
2018-01-21
知道答主
回答量:6
采纳率:0%
帮助的人:2615
展开全部
跳帽的问题吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式