图1 中断系统结构由图1结构可知,51单片机有五个中断请求源,四个用于中断控制的寄存器ie、ip、tcon(用6位)和scon(用2位)—用于控制中断的类型、中断的开/关和各种中断源的优先级别。五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序的嵌套。
1、mcs-51中断源
1.定时器/计数器控制寄存器tcon(88h)
tcon为定时器/计数器t0、t1的控制器,同时也锁存了t0、t1的溢出中断源和外部中断请求源,与中断有关的位如下:
ie1:外部中断 (p3.3)请求标志位。
it1:外部中断 请求类型(触发方式)控制位。
it1=0:外部中断1程控为电平触发方式,当 (p3.3)输入低电平时,置位ie1=1,申请中断。
it1=1:外部中断1程序控制为边沿触发方式,cpu在每个机器周期的s5p2采样 (p3.3)输入电平。
ie0:外部中断0()请求标志位。
it0:外部中断0()触发方式控制位。
tf0:定时器t0 的溢出中断申请位。
tf1:定时器t1 的溢出中断申请位。
2.串行口控制寄存器scon(98h)
scon(98h)为串行口控制寄存器,scon的低两位锁存串行口接收中断和发送中断标志ri和ti,其格式如下:
ri和ti:串行口内部表示中断申请标志位。
2、mcs-51中断控制
1.中断允许寄存器ie(a8h)
mcs-51单片机中,特殊功能寄存器ie为中断允许寄存器,控制cpu对中断源的开放或屏蔽,以及每个中断源是否允许中断。其格式为:
ea:cpu中断开放标志。ea=1,cpu开放中断;ea=0,cpu屏蔽所有的中断请求。
es:串行中断允许位。es=1,允许串行口中断;es=0,禁止串行口中断。
et1:t1溢出中断允许。et1=1,允许t1中断;et1=0,禁止t1中断。
ex1:外部中断1( )允许位。ex1=1,允许外部中断1中断;ex1=0,禁止外部中断1中断。
et0:t0溢出中断允许位。et0=1,允许t0中断;et0=0,禁止t0中断。
ex0:外部中断0( )允许位。ex0=1,允许外部中断0中断;ex0=0,禁止外部中断0中断。
mcs-51单片机复位后,ie中各位均被清0,即禁止所有中断。
2.中断源优先级设定寄存器ip(b8h)
8051单片机具有二个中断优先级,每个中断源可编程为高优先级中断或低优先级中断,并可实现二级中断嵌套。
特殊功能寄存器ip为中断优先级寄存器,所存各种中断源优先级的控制位,用户可用软件设定,其格式如下:
ps:串行口中断优先级控制位。ps=1,设定串行口为高优先级中断;ps=0,为低优先级中断。
pt1:t1中断优先级控制位。
pt0:t0中断优先级控制位。
3.优先级结构
mcs-51的cpu每一个机器周期顺序检查每一个中断源,在任意机器周期的s6状态采样并按优先级处理所有被激活的中断请求,在下一个机器周期的s1状态,只要不受阻断就开始响应其中最高优先级的中断请求。若发生下列情况,中断响应会受到阻断:
(1) 同级或高优先级的中断正在进行
(2) 现在的机器周期不是所执行指令的最后一个机器周期;
(3) 正执行的指令是reti或是访问ie或ip的指令,也就是说cpu在执行reti或访问ie、ip的指令后,至少需要再执行其它一条指令之后才会响应。
如果上述条件中有一个存在,cpu将丢弃中断查询的结果;若一个条件也不存在,接着的下一机器周期,中断查询结果变为有效。