51单片机执行完外部中断0后,想让他返回主函数的开头从新执行,继续检测中断执行中断在返回主函数开头
51单片机执行完外部中断0后,想让他返回主函数的开头从新执行,继续检测中断执行中断在返回主函数开头,请问如何实现?如果在中断函数中最后调用软件复位函数可以吗...
51单片机执行完外部中断0后,想让他返回主函数的开头从新执行,继续检测中断执行中断在返回主函数开头,请问如何实现?如果在中断函数中最后调用软件复位函数可以吗
展开
展开全部
你主函数中除了初始化的语句外,其它的处理部分都放在WHILE(1)的循环中啊,然后 外部中断中设置一个标志位,举例说明,比如。下面例子,是外中断一次,P0取反一次,你如果还想有其它数据处理,可以把语句写在WHILE(1)中。中断执行后,判断FLAG,然后会自动回到主函数中。
void main(void)
{
flag=0;
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //负跳变来触发外中断
P0=0xff;
while(1)
{
if(flag)
{
可以在此添加语句。
}
可以在此添加语句。 }
}
void it0(void) interrupt 0 using 0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
flag=1;
}
void main(void)
{
flag=0;
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //负跳变来触发外中断
P0=0xff;
while(1)
{
if(flag)
{
可以在此添加语句。
}
可以在此添加语句。 }
}
void it0(void) interrupt 0 using 0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
flag=1;
}
追问
如果返回开头执行是不是把flag=0改成flag=1就可以了
追答
怎么样都可以,我写if(flag),只是举例而已,中断后不可能返回主函数第一句(初始化语句),只能从WHILE ,或者 判断 标志位那开始。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个思路不对吧?中断来了自然就去执行中断函数了,还要到主函数开头等待吗?
追问
执行完中断不是返回主函数中断的位置继续执行主函数吗,我想让它直接主函数返回开头
追答
实在要返回开头,,试试GOTO看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询