51单片机外部中断疑问

我想让程序一直卡在外部中断0中 但实际效果是单片机执行完一次中断后到再执行下一次中断之间单片机要间隔很短的时间 并且这个很短的时间单片机又可以执行其它语句 这是为什么?求赐教

若是一直让程序在外部中断0中,大家也许会想到用低电平触发方式,但也只是想罢了,是不可能实现的。因为当单片机检查到中断标志位置位后,就会进入中断函数,但中断函数语句执行完后,便会退出中断,并清除中断标志位,回到原来的地方继续执行。
我们也许会想,如果中断标志位一直置位,那么程序退出中断后,便会再进入中断,这个也不对。CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样的中断进行查询。
也就是说,(假设都是单周期指令)执行第一条指令的时候,在S5P2时刻检测到标志位置位,那么在执行第二条指令的时候的S5P2时刻,才会进入中断函数。
总的来说,就是不会一直在中断里,就算是低电平触发,这次中断完成后,也要至少再执行一条才会进入中断,也就是你的问题,在这个很短的时间内单片机又可以执行其他语句。
一个类似的问题,你可以看看
http://zhidao.baidu.com/question/475259582?&oldq=1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-22
因为单片机相应中断就会进入中断函数,执行完中断函数就会退出,返回到中断之前的程序代码中。你想让他执行在中断,试试在中断处理程序里面加一个死循环:比如 while(1)或者for(;;)之类的试试。希望对你有帮助
第2个回答  2013-03-20
外部中断:有外部信号时中断当时操作,而执行高级任务。如果你的设置高级任务为空,和没有执行中断是相同的。单片机是循环扫描的,每次执行到中断处会判断中断是否完成的。
第3个回答  2013-03-20
要让它一直符合中断的条件才行,比如让外部中断那个脚一直是中断的电平,还有进入中断就不有出中断的语句,一般这样做是不对的,除非你有特殊需求。
相似回答