51单片机中断执行过程?坐等!!!

CPU检测到有外部中断的时候,是先保存下一条指令到堆饯里,再执行完未完成的指令,还是先执行完未完成的指令,再保存下一条指令到堆饯里?

51单片机中断执行过程, 如外部中断。
当 CPU 检测到 有 中断触发 信号后,
首先 执行完成 当前执行的指令,将下一条指令 的 地址 压入堆栈,
CPU 进入中断 入口 地址,开始 执行 中断服务程序,
(当然在中断服务程序中不能破坏正常运行 程序的各种 寄存器的 状态 和 数据,)
中断服务 程序执行 完成, 最后 执行 一条 RETI 的中断返回指令,
堆栈 弹出 原先保存的 地址,完成中断服务程序,返回中断前的 下一条指令地址
继续执行 正常程序。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-15
中断定义:当MCS-51单片机的CPU正在处理某事情的时候,单片机外部或内部发生的某一事件(如外部设备产生的一个电平的变化,一个脉冲沿的发生或内部计数器的计数溢出等)请求CPU迅速处理,于是,CPU暂时终止当前的工作,转到中断服务程序处理发生的事情,中断服务程序处理完该事情后,再返回到原来处理事件的地方,继续原来的工作,这称为中断。
你的问题: 中断系统通过硬件自动生成长调用指令(LACLL),该指令自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其他寄存器的内容);然后将对应 的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。
多看书学习! - -!
第2个回答  2013-01-15
1.程序执行是可以中断的,但是单个的指令是不能中断的,就是说中断是发生在当前指令完成后。
2.在执行中断前,要保护现场,就是将必要的数据压入堆栈。
3.中断有优先级,高级的可以中断低级的,同级的按顺序执行。
4.中断程序执行完毕,弹出堆栈,恢复正常运行。
供参考。
第3个回答  2013-01-15
51单片机执行任何中断都会自动保护断点,将PC(程序计数器的值)压入堆栈,执行完中断后PC出栈,再从中断处继续执行指令。请注意,不是“先保存下一条指令到堆饯里”!,希望能帮你解惑。
第4个回答  2013-01-15
根据优先权,不会同时响应,先处理高级中断,然后接着处理低级中断。同等级中断,按照你预先设置好的顺序执行。