51单片机的5个中断源分为两种类型:一类是外部中断源,包括INTO和INTI;另一类是内部中断源,包括两个定时器/计数器(TO和T1)的溢出中断(TFO和TF1)和串行口的发送/接收中断(TI/RI)。(1)外部中断51单片机提供了两个外部中断请求INTO和INTI,它们的中断请求信号有效方式分为电平触发和脉冲触发两种。电平方式是低电平触发有效,脉冲方式为负跳变触发有效。CPU在每个机器周期的S5P2检测INTO和INTI上的信号。对于电平方式,只要检测到低电平信号即为有效申请;对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求信号是否有效。中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变化能被单片机检测到。(2)内部中断除外部中断源外,51单片机内部还有TFO、TF1、TI、RI,分别为定时器/计数器溢出中断和串行口的发送/接收中断的中断源。当中断源有中断请求时,相应的中断源的中断请求标志置位。外部中断0、外部中断1、定时器/计数器0溢出中断、定时器/计数器1溢出中断和串行口的发送/接收中断的中断请求标志分别为IEO、IE1、TFO、TF1、TI或RI。IEO、IE1、TFO、TF1在特殊功能寄存器TCON中,TI或RI在特殊功能寄存器SCON中。2.中断控制寄存器51单片机设置了4个专用寄存器用于中断控制,这4个寄存器分别为定时器/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)、中断充许控制寄存器(IE)、中断优先级控制寄存器(IP),用户可以通过设置其相应位的状态来管理中断系统。(1)定时/计数器控制寄存器(TCON)TCON寄存器是定时器/计数器控制寄存器,其地址为片内RAM88H。TCON主要用来控制2个定时器/计数器的启/停、定时器/计数器溢出标志、2个外部中断源中断请求标志及外部中断源的中断触发方式选择。TCON的格式如下:D7D4D3D2DOD6D5D1TCONTR1TFOTROIE1IT1TF1IEOITO(88H)在该寄存器中,TR1、TRO用于定时器/计数器的启动控制,其余6位用于中断控制,其作用如下:ITO(IT1)为外部中断O(1)请求信号方式控制位。IT=1为脉冲触发方式(负跳变有效);IT=0为电平触发方式(低电平有效)。通过指令可以将ITO(IT1)置“1”或清“0”,如:ITO=O://外部中断0的中断请求触发方式为电平方式(ITO清0)IT1=1://外部中断1的中断请求触发方式为脉冲方式(IT1置1)IEO(IE1)为外部中断O(1)请求标志位。当CPU检测到P3.2(P3.3)端有中断请求信号时,由硬件置位,使IE=1请求中断,中断响应后转向中断服务程序时,根据不同的中断79
79 51单片机的5个中断源分为两种类型:一类是外部中断源,包括INT0和INT1;另一类是 内部中断源,包括两个定时器/计数器(T0和T1)的溢出中断(TF0和TF1)和串行口的发送 /接收中断(TI/RI)。 (1)外部中断 51单片机提供了两个外部中断请求INT0和INT1,它们的中断请求信号有效方式分为电 平触发和脉冲触发两种。电平方式是低电平触发有效,脉冲方式为负跳变触发有效。 CPU在每个机器周期的S5P2检测INT0和INT1上的信号。对于电平方式,只要检测到低电 平信号即为有效申请;对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求 信号是否有效。中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变 化能被单片机检测到。 (2)内部中断 除外部中断源外, 51单片机内部还有TF0、TF1、TI、RI,分别为定时器/计数器溢出 中断和串行口的发送/接收中断的中断源。 当中断源有中断请求时,相应的中断源的中断请求标志置位。外部中断0、外部中断 1、定时器/计数器0溢出中断、定时器/计数器1溢出中断和串行口的发送/接收中断的中断 请求标志分别为IE0、IE1、TF0、TF1、TI或RI。IE0、IE1、TF0、TF1在特殊功能寄存器 TCON中,TI或RI在特殊功能寄存器SCON中。 2.中断控制寄存器 51单片机设置了4个专用寄存器用于中断控制,这4个寄存器分别为定时器/计数器控制 寄存器(TCON)、串行口控制寄存器(SCON)、中断允许控制寄存器(IE)、中断优先级 控制寄存器(IP),用户可以通过设置其相应位的状态来管理中断系统。 (1)定时/计数器控制寄存器(TCON) TCON寄存器是定时器/计数器控制寄存器,其地址为片内RAM 88H。TCON主要用来控制2个定时器/计数器的启/停、定时器/计数器溢出标志、2个外部中 断源中断请求标志及外部中断源的中断触发方式选择。TCON的格式如下: D7 D6 D5 D4 D3 D2 D1 D0 TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 在该寄存器中,TR1、TR0用于定时器/计数器的启动控制,其余6位用于中断控制,其 作用如下: IT0(IT1)为外部中断0(1)请求信号方式控制位。IT = 1为脉冲触发方式(负跳变有 效);IT = 0为电平触发方式(低电平有效)。通过指令可以将IT0(IT1)置“1”或清“0”, 如: IT0=0; //外部中断0的中断请求触发方式为电平方式(IT0清0) IT1=1; //外部中断1的中断请求触发方式为脉冲方式(IT1置1) IE0(IE1)为外部中断0(1)请求标志位。当CPU检测到P3.2(P3.3)端有中断请求信 号时,由硬件置位,使IE = 1请求中断,中断响应后转向中断服务程序时,根据不同的中断
请求触发方式,有不同的清除方式。TFO(TF1)为定时器/计数器溢出标志位,中断响应后转向中断服务程序时,硬件自动清零。TRO(TRI)放在定时器/计数器一节介绍。(2)串行口控制寄存器(SCON)SCON是串行口控制寄存器,其地址为片内RAM98H,SCON格式如下:D7D5D4D3D2D6D1DOSCONSMOSM1SM2RENTB8RB8TIR(98H)SCON中的高6位用于串行口控制,其功能将在串行口部分介绍;低2位(RI、TI)用于中断控制,其作用如下:TI为串行口发送中断请求标志位,发送完一顿串行数据后,由硬件置1,其清零必须由软件完成。RI为串行口接收中断请求标志位,接收完一顿串行数据后,由硬件置1,其清零必须由软件完成。在51单片机串行口中,TI和RI的逻辑“或”作为一个内部中断源,二者之一置位都可以产生串行口中断请求,然后在中断服务程序中测试这两个标志位,以决定是发送中断还是接收中断。(3)中断允许控制寄存器(IE)IE是中断允许控制寄存器,其地址为片内RAMA8H,CPU对中断系统的所有中断及某个中断源的“允许”与“禁止”都是由它来控制的。IE中断允许寄存器格式如下:D7D6D5D4D3D2D1DOIEEAESET1EX1ETOEXO(A8H)寄存器中用于控制中断的共有6位,实现中断管理,其作用如下:EA为中断允许总控制位。EA=1时,CPU开放中断:EA=O时,CPU屏蔽所有中断请求。ES、ET1、EX1、ETO、EXO为对应的串行口中断、定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断的中断允许位。对应位为1时,允许其中断,对应位为0时,禁止其中断。通过指令可以规定51单片机的中断系统及各中断源的开放与屏蔽。如:EA=0;//屏蔽了所有中断(EA清零)EXO=0//屏蔽了外部中断0中断(EXO清零)//开放定时器/计数器1中断(ET1置1)ET1=151单片机中断系统的管理是由中断允许总控制EA和各中断源的控制位联合作用实现的,缺一不可。80
80 请求触发方式,有不同的清除方式。 TF0(TF1)为定时器/计数器溢出标志位,中断响应后转向中断服务程序时,硬件自动 清零。 TR0(TR1)放在定时器/计数器一节介绍。 (2)串行口控制寄存器(SCON) SCON是串行口控制寄存器,其地址为片内RAM 98H,SCON格式如下: D7 D6 D5 D4 D3 D2 D1 D0 SCON (98H) SM0 SM1 SM2 REN TB8 RB8 TI RI SCON中的高6位用于串行口控制,其功能将在串行口部分介绍;低2位(RI、TI)用于 中断控制,其作用如下: TI为串行口发送中断请求标志位,发送完一帧串行数据后,由硬件置1,其清零必须由 软件完成。 RI为串行口接收中断请求标志位,接收完一帧串行数据后,由硬件置1,其清零必须由 软件完成。 在51单片机串行口中,TI和RI的逻辑“或”作为一个内部中断源,二者之一置位都可 以产生串行口中断请求,然后在中断服务程序中测试这两个标志位,以决定是发送中断还 是接收中断。 (3)中断允许控制寄存器(IE) IE是中断允许控制寄存器,其地址为片内RAM A8H,CPU对中断系统的所有中断及某个中断源的“允许”与“禁止”都是由它来控制的。I E中断允许寄存器格式如下: D7 D6 D5 D4 D3 D2 D1 D0 IE (A8H) EA — — ES ET1 EX1 ET0 EX0 寄存器中用于控制中断的共有6位,实现中断管理,其作用如下: EA为中断允许总控制位。EA = 1时,CPU开放中断;EA = 0时,CPU屏蔽所有中断请求。 ES、ET1、EX1、ET0、EX0为对应的串行口中断、定时器/计数器1中断、外部中断1中断 、定时器/计数器0中断、外部中断0中断的中断允许位。对应位为1时,允许其中断,对应 位为0时,禁止其中断。通过指令可以规定51单片机的中断系统及各中断源的开放与屏蔽。 如: EA=0; //屏蔽了所有中断(EA清零) EX0=0 //屏蔽了外部中断0中断(EX0清零) ET1=1 //开放定时器/计数器1中断(ET1置1) 51单片机中断系统的管理是由中断允许总控制EA和各中断源的控制位联合作用实现的 ,缺一不可
51单片机系统复位后,E各位均清零,即禁止所有中断(4)中断优先级控制寄存器(IP)IP是中断优先级控制寄存器,其地址为片内RAMB8H,中断优先级控制寄存器的格式如下:D7D2D1DOD6D5D4D3IPPX1PTOPXOPSPT1(B8H)51单片机规定了两个中断优先级:高级中断和低级中断,用中断优先级寄存器(IP)的5位状态管理5个中断源的优先级别,即PS、PT1、PX1、PTO、PXO分别对应串行口中断、定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断,当相应位为1时,设置其为高级中断:相应位为0时,设置其为低级中断。通过指令可以规定各中断源的中断优先级,如:PS=1;//设置串行口中断为高级中断(PS置1))PXO=O://设置外部中断O中断为低级中断(PXO清零)3.中断优先级与中断响应(1)中断优先级51单片机中断系统具有两级优先级(由IP寄存器把各中断源的优先级分为高优先级和低优先级),它们遵循下列两条基本原则:①为了实现中断嵌套,高优先级中断请求可以中断低优先级的中断服务;反之,则不允许。②同等优先级中断源之间不能中断对方的中断服务过程。为了实现上述两条原则,中断系统内部包含两个不可寻址的优先级状态触发器。其中一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其他中断的响应;另一个触发器则指出某低优先级的中断正得到服务,所有同级的中断都被阻止,但不阻止高优先级中断源。同级内的中断优先级中断源外部中断0中断定时器/计数器0溢出中断当同时收到几个同一优先级的中断时,响应哪外部中断1中断定时器/计数器1溢出中断t一个中断源取决于内部查询顺序。其优先级排列如低串行口中断图3-11所示。图3-11中断优先级排列(2)中断响应CPU的中断响应是对中断服务程序的执行。51单片机在每个机器周期的S5P2期间,顺序对每个中断源进行采样,CPU在下一个机器周期的S6期间按优先级顺序查询中断标志,如果查询到某个标志位为“1”,表明有中断请求发生,则在下一个机器周期的S1期间按优先级进行中断处理。中断得到响应后,由硬件将程序计数器PC内容压入堆栈保护,然后将对应的中断函数(中断服务程序)入口地址装入程序计数器PC,执行相应的中断函数。但是,如果出现下列情况之一时,中断不能进行响应:①CPU正在为高级或同级的中断源服务。81
81 51单片机系统复位后,IE各位均清零,即禁止所有中断。 (4)中断优先级控制寄存器(IP) IP是中断优先级控制寄存器,其地址为片内RAM B8H,中断优先级控制寄存器的格式如 下: D7 D6 D5 D4 D3 D2 D1 D0 IP (B8H) — — —PS PT1 PX1 PT0 PX0 51单片机规定了两个中断优先级:高级中断和低级中断,用中断优先级寄存器(IP) 的5位状态管理5个中断源的优先级别,即PS、PT1、PX1、PT0、PX0分别对应串行口中断、 定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断,当相应位 为1时,设置其为高级中断;相应位为0时,设置其为低级中断。通过指令可以规定各中断 源的中断优先级,如: PS=1; //设置串行口中断为高级中断(PS置1) PX0=0; //设置外部中断0中断为低级中断(PX0清零) 3.中断优先级与中断响应 (1)中断优先级 51单片机中断系统具有两级优先级(由IP寄存器把各中断源的优先级分为高优先级和低 优先级),它们遵循下列两条基本原则: ① 为了实现中断嵌套,高优先级中断请求可以中断低优先级的中断服务;反之,则不 允许。 ② 同等优先级中断源之间不能中断对方的中断服务过程。 为了实现上述两条原则,中断系统内部包含两个不可寻址的优先级状态触发器。其中 一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其他中断的响应;另一个 触发器则指出某低优先级的中断正得到服务,所有同级的中断都被阻止,但不阻止高优先 级中断源。 当同时收到几个同一优先级的中断时,响应哪 一个中断源取决于内部查询顺序。其优先级排列如 图3-11所示。 (2)中断响应 CPU的中断响应是对中断服务程序的执行。 51单片机在每个机器周期的S5P2期间,顺序对每个中断源进行采样,CPU在下一个机器 周期的S6期间按优先级顺序查询中断标志,如果查询到某个标志位为“1”,表明有中断请 求发生,则在下一个机器周期的S1期间按优先级进行中断处理。中断得到响应后,由硬件 将程序计数器PC内容压入堆栈保护,然后将对应的中断函数(中断服务程序)入口地址装 入程序计数器PC,执行相应的中断函数。但是,如果出现下列情况之一时,中断不能进行 响应: ① CPU正在为高级或同级的中断源服务。 图 3-11 中断优先级排列