中断嵌套问题
这个问题我来,首先51单片机的中断有很多种,定时器啊,外部中断啊AD中断啊什么的,他们的触发方式都不是太一样。而你说的中断嵌套的含义实质上指的是,当你执行一个中断程序的过程中,进入另一个程序,这样的流程实际上是涉及中断的优先级的,也即是说,如果在进入中断程序A中时,如果B中断的优先级更高,则会去执行B,反之,就不执行B。你说的嵌套属于第一种情况
首先,你还不怎么理解中断这个概念,先别急着去想中断嵌套。80C51同级的中断优先级外部中断0比定时器0要高,如过你不设定中断优先级,外部中断0和定时器0同时发生中断时,外部中断先响应。中断的产生要先设定中断源,中断一但发生,如果使能了中断允许总控制位和相关外设中断允许位,工作相关寄存器和PC要入栈,然后PC跳到相关中断入口地址执行服务函数,中断入口地址是硬件的,在汇编中会明确写出入口地址。回到你的问题,如果你设定定时器0的优先级比外部中断0要高,假设现正在执行外部中断0过程中,突然定时器0溢出发生中断,由于定时器0的优先级比外部中断0的要高,所以正在执行的中断函数被请求中断,相关寄存器要被推入栈中,注意栈的大小,不要发生栈溢出,否则后果不堪设想。PC跳转到定时器0的服务函数执行,执行完后再回到外部中断0继续执行服务函数。实现两级中断嵌套。中断的嵌套并没有存在调用函数
谢谢大神,赐教啊
建议看看单片机的汇编,对理解有很大的好处
这个问题有点2啊
中断嵌套涉及到中断优先级的问题,首先单片机自身有个自然优先级,这个优先级是说当所有中断同时到来时先执行哪个(一般这种情况很少),其次就是你说的中断嵌套的问题,默认是中断执行期间,cpu是不接受其他中断的,但你设置中断优先级后,强制在cpu执行中断时可以接收更高优先级中断,也就是高优先级中断打断了低优先级中断,这样实现嵌套,建议可以看看中断向量这个概念