为什么单片机执行中断后不能跳回主程序?

#include<reg52.h>
unsigned char a;
void main()
{
EA=1;
IT0=1;
EX0=1;
a=0xf0;
while(1)
{
P2=a;
}
}
void exit() interrupt 0
{
a=0x3f;
}

没有问题呀,执行中断前 P2=a=0xf0,执行中断后P2=a=0x3f,后不管中断否,始终是 P2=a=0x3f
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-14
是不是一直有中断触发啊

单片机进入串口中断后,不能返回主程序while(1),指示灯仿真不闪烁,在线...
仅仅看程序看不出问题所在,有可能是硬件上的问题,看这个程序有串口传送,在循环中出问题的地方很可能是串口发送那里,可能是程序卡死在那里了,也就是说有可能在发送的时候没有完成串口的发送。在主程序中只有发送,难道是自己发送自己接收,这样可能引起在发送中产生接收的中断,这样有可能在中断中处理...

51单片机,我的外部中断执行后为什么回不了原来的主程序,主程序用定时...
由于外部中断改变了P1的值,使循环P1=_crol_(P1,1);的初值改变,中断后P1=0xff,流水灯循环效果没有了。考虑增加1全局变量k,让k循环,再赋值给p1 include<reg51.h> include<intrins.h> define uchar unsigned char uchar j,k; \/\/增加k保护P1状态 void Delay(){ unsigned char a,b,c;for...

单片机中中断服务子程序没执行完能强行跳回主程序吗,若不能为什么?若能...
当然可以强行跳回主程序,不影响中断标志位的清零,只要进入中断,该硬件清零的就自动清零,但强行跳回主程序,单片机会认为一直在执行中断程序,因此以后有中断发生时也不会再进入中断程序。所以不能这样做,用RETI就会跳回主程序。

单片机中断退出问题
只要定时中断里没有死循环这样的程序,在完全执行好中断程序后就可以使用RETI退出(如果是C语言,这条语句也省掉了)。但不能退回到主程序开始时,而是退回到你中断前瞬间在执行的程序附近。如果你要进行初始化什么的,就把初始化信息加在中断服务程序中。在中断时候,把定时初值之类的信息直接重装了。

单片机中断退出问题
只要定时中断里没有死循环这样的程序,在完全执行好中断程序后就可以使用RETI退出(如果是C语言,这条语句也省掉了)。但不能退回到主程序开始时,而是退回到你中断前瞬间在执行的程序附近。如果你要进行初始化什么的,就把初始化信息加在中断服务程序中。在中断时候,把定时初值之类的信息直接重装了。

c51 单片机编程中断问题,中断后不能继续返回main函数,哪位高手看一下...
if(KEY_BIT == 0)\/\/按键仍然是按下状态 { \/\/while(KEY_BIT == 0);\/\/等待按键抬起 这部分就不用了。使用边沿触发,不必在等待按键抬起,因为第一个下降沿已经出发了中断。如果硬件是现成开发板的话就不用这么麻烦了,如果是自制电路板,记得在P3.3加上10uF防抖电容,防抖电路可参考图片。我的...

单片机定时中断执行完中断程序后将返回主程序哪里
有些是需要软件压入),当中断函数执行完毕的时候,PC值会被弹出堆栈,这样程序会跳到PC值所指向的那条程序继续执行。当然这个是单片机的运行机制,如果仅从表面现象来看的话就是:单片机在运行某条程序的时候,忽然来中断了,中断完了,程序又跳回这条程序继续往下执行。 欢迎追问 ...

中断服务程序完成后怎样跳到main函数指定位置
你可以在中断中设置一个全局变量,如果中断后,改变这个全局变量,在程序的关键部位检测这个变量是否改变,如果改变了执行“goto +标签;”的跳转指令,就可以让程序到指定位置 但该方式不能中断立即跳转到指定位置,但是因为单片机的运算速度实在太快了,知道你在关键部位写如个检测程序,如if(k==1)goto ...

51单片机中断怎么跳出去继续执行主程序的问题
中断函数执行完成退出后,便自动返回主程序继续下一个指令的执行的;在中断函数里,不要做太多的事情,更不要有延时函数,除非其延时值比中断间隙要小,否则中断会乱套的;

51单片机int0中断后会回到原来程序继续执行,现在我不想回到原程序,我想...
你就在主函数先设置一个变量,然后用while或者if语句当满足自己设置的变量值时才执行主函数。然后再在中断中的最后将主函数的变量置数到自己设置的那个数那么它就会重主函数开始

相似回答