单片机高手请进!!!

2025-02-23 09:07:44
推荐回答(5个)
回答1:

#include "reg51.h"
void int0() interrupt 0 using 2 /*外部中断0中断服务函数*/
{
if(EX1==1)*如果中断1已经开启,那么不理会中断0*/
{
return; /*中断返回*/
}
else
{
/*中断0要做的事情*/
return;
}
}
void int0() interrupt 1 using 3 /*外部中断0中断服务函数*/
{
if(EX0==1)/*如果中断0已经开启,那么不理会中断1*/
{
return; /*中断返回*/
}
else
{
/*中断1要做的事情*/
return;
}
}

main()
{
EA=1;
for(;;)
{
IT0=1;/*开启中断1*/
EX0=1;
IT0=0;/*关闭中断0*/
EX0=0;

IT1=1;/*开启中断1*/
EX1=1;
IT1=0;/*关闭中断1*/
EX1=0;
}
}

其实真没读懂你要干的是什么。
“先开启INT0中断,然后关闭 再开启INT1中断,然后关闭”,本身就排除了 “INT0中断先开启,就不理睬后面的INT1中断” 因为是关闭了中断0后才开启的中断1嘛。

回答2:

在INT0中断里关闭总中断,delay一段时间再开启总中断,把第二个终端delay过去。

回答3:

进入一个中断后在里面把另一个关了就行了。

回答4:

可以采用一个跳转试试

回答5:

a=_cror_(a,1);