第5章mcs-51的中断系统内容摘要:

外部中断 0中断优先级控制位 1: 高优先级中断; 0: 低优先级中断。 由软件可改变各中断源的中断优先级。 MCS51的中断系统 有 两个 不可寻址的 “ 优先级激活触发器 ” : 一个 用来指示某高优先级的中断正在执行,所有后来的中断均被阻止。 另一个 用来指示某低优先级的中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。 在同时收到 几个同一优先级的中断请求 时, 优先响应哪一个中断,取决于 内部的查询顺序。 查询顺序 如下: 中断源 中断级别 外部中断 0 最高 T0溢出中断 外部中断 1 T1溢出中断 串行口中断 最低 例 52 设置 IP寄存器的初始值 , 使 2个外中断请求为高优先级 , 其它中断请求为低优先级。 ( 1) 用位操作指令 SETB PX0 ; 2个外中断为高优先级 SETB PX1 CLR PS ; 串口为低优先级中断 CLR PT0 ; 2个定时器 /计数器低优先级中断 CLR PT1 ( 2) 用字节操作指令 MOV IP, 05H 或: MOV 0B8H, 05H ; B8H为 IP寄存器的字节地址 响应中断请求的条件 一个中断请求被响应 , 需满足以下必要条件: ( 1) IE寄存器中的中断总允许位 EA=1。 ( 2) 该中断源发出中断请求,即该中断源对应的中 断请求标志为 “ 1”。 ( 3) 该中断源的中断允许位 =1, 即该中断没有被屏 蔽。 ( 4) 无同级或更高级中断正在被服务。 中断响应的主要过程: 首先由硬件自动生成一条长调用指令 : LCALL addr16 接着就由 CPU执行该指令 ,将 PC的内容压入堆栈以保护断点,再将中断入口地址装入 PC。 各中断源服务程序的入口地址是固定的,如下所示: 中断源 入口地址 外部中断 0 0003H 定时器 /计数器 T0 000BH 外部中断 1 0013H 定时器 /计数器 T1 001BH 串行口中断 0023H 中断响应是有条件的 , 遇到 下列三种情况 之一时 , 中断响应被封锁: ( 1) CPU正在处理同级的或更高优先级的中断。 ( 2) 所查询的机器周期 不是所当前正在执行指令的最后一个机器周期。 只有在当前指令执行完毕后 ,才能进行中断响应。 ( 3) 正在执行的指令是 RETI或是访问 IE或 IP的指令。 需要再去执行完一条指令,才能响应新的中断请求。 如果存在上述三种情况之一, CPU将丢弃中断查询结果,不能对中断进行响应。 外部中断的响应时间 外部中断的 最短 的响应时间为 3个机器周期 : ( 1)中断请求标志位查询占 1个机器周期。 ( 2)子程序调用指令 LCALL转到相应的中断服务程序入口,需 2个机器周期。 外部中断响应的 最长 的响应时间为 8个机器周期 : ( 1)发生在 CPU进行中断标志查询时,刚好是开始 执行 RETI或是访问 IE或 IP的指令 ,则 需把当前指令执行完 再继续执行一条指令后,才能响应中断, 最长需 2个机器周期。 ( 2)接着再执行一条指令,按最长指令(乘法指令 MUL和除法指令 DIV) 来算,也只有 4个机器周期。 ( 3)加上 硬件子程序调用 指令 LCALL的执行,需要 2个机器周期。 所以, 外部中断响应最长。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。