????![]() ??中断允许控制寄存器 (IE) ? |
????下面我们对有关控制位作说明: ????·EA——中断允许总控制位,EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。 ????·EX0(EX1)——外部中断允许控制位,EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。 ????·ET0(ET1)——定时/计数中断允许控制位,ET0(ET1)=0,禁止定时/计数中断。ET0(ET1)=1,允许定时/计数中断。 ????·ES——串行中断允许控制位,ES=0,禁止串行中断。ES=1,允许串行中断。 ????中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断,中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以EA位作为总中断控制位,以各中断控制位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止整个中断都是禁止的。只有当EA=1(允许)时,才能由各分控制位设置各自的中断允许与禁止。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。 ????值得一提的是:单片机中断响应后不会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。 ???? ![]() ??中断优先级控制寄存器 (IP) ??MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别由优先寄存器(IP)进行控制。 ? |
????·PX0——外中断0(INT0)优先级控制位。 ????·PT0——定时中断0(T0)优先级控制位。 ????·PX1——外中断1(INT1)优先级控制位。 ????·PT1——定时中断1(T1)优先级控制位。 ????·PS ——串行中断(ES)优先级控制位。 ????控制位=0,优先级为低。控制位=1,优先级为高。 ????中断优先级是为了中断嵌套服务的,控制原则为: ????(1)?低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。 ????(2)?同级的中断已经响应,其他中断将被禁止。 ????(3)?如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0→定时中断0→外中断1→定时中断1→串行中断。 ???? ![]() ??中断控制寄存器的状态设置 ????在应用中,我们可以通过相应的控制寄存器来使用中断系统,因此从使用的角度上看,这些控制寄存器是面向用户的。这些控制寄存器既可以进行字节寻址,也可以进行位寻址,也就是对位状态的寻址既可以使用字节操作指令也可以使用位操作指令,例如: ????????MOV????IE,#81H ????如使用位操作指令,也可写为: ????????SETb????EA ????????SETb????EX0 ????对于一般的外中断程序,我们可以这样安排: ????????ORG????0000H????;主程序入口 START:??AJMP???MAIN ????????ORG????0003H????;外中断程序入口 ????????AJMP???INT00 MAIN:???MOV????IE,#81H??;允许总中断和外中断 ????????……????????????;主程序 ????????…… ????????…… INT00:??……????????????;外中断服务程序 ????????…… ????????RETI????????????;中断返回 ? |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |