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还会点亮,真是不解,盼望大神指点迷津,先谢过了 展开
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还会点亮,真是不解,盼望大神指点迷津,先谢过了 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询