第5章单片机的中断系统课件.ppt
《第5章单片机的中断系统课件.ppt》由会员分享,可在线阅读,更多相关《第5章单片机的中断系统课件.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 单片机的中断系统单片机的中断系统 51单片机的中断系统是8位机中功能较强的,可以提供5个中断源(52系列是6个),具有两个中断优先级,可以实现两级中断嵌套。5.1 中断的基本知识中断的基本知识 5.1.1 中断源及中断结构 MCS-51单片机的5个中断源分为两种类型:一类是外部中断源,包括 和 ;一类是内部中断源,包括两个定时器/计数器(T0和T1)的溢出中断和串行口的发送/接收中断。MCS-51单片机中断系统结构图5-1所示。1讲图图5-1 MCS-51 单片机中断系统结构单片机中断系统结构 1.外部中断 它们的中断请求信号有效方式分为电平触发和脉冲触发两种。电平方式是低电平有效
2、,脉冲方式为负跳变触发有效。对于电平方式,只要检测到低电平信号即为有效申请。对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求信号是否有效。中断请求信号高低电平的状态都应该至少维持一个机器周期,以确保电平变化能被单片机检测到。2.内部中断除外部中断外,内部还有TF0、TF1、TI/RI分别为定时/计数器溢出中断和串行口的发送/接收中断的中断源。5.1.2 5.1.2 中断控制中断控制 MCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。1.定时器控制寄存器(TCON)TCON的格式如图5-2所示。IT0IE0IT1IE1TR0 TF0 TR1TF1D7
3、 D6 D5 D4 D3 D2 D1 D0 TCON(88H)图图5-2 TCON的格式的格式 在该寄存器中,TR1、TR0用于定时/计数器的启动控制,其余6位用于中断控制,其作用如下:1)IT0为外中断0请求信号方式控制位。IT0=1为脉冲触发方式(负跳变有效),IT0=0为电平方式(低电平有效)。2)IE0为外部中断0请求标志位。当CPU检测到(P3.2)端有中断请求信号时,由硬件置位,使IE0=1请求中断,中断响应后转向中断服务程序时,由硬件自动清零。3)IT1为外部中断1请求信号方式控制位,其作用同IT0。4)IE1为外部中断1请求标志位,其作用同IE0。5)TF0(TF1)为定时/计
4、数器溢出标志位,此标志的作用将在5.3节说明。2.串行口控制寄存器(SCON)SCON的格式如图5-3所示。RITIRB8TB8REN SM2 SM1SM0 D7 D6 D5 D4 D3 D2 D1 D0 TCON(98H)图图5-3 SCON的格式的格式 SCON中的高6位用于串行口控制,低2位(RI、TI)用于中断控制,其作用如下:1)TI为串行口发送中断请求标志位,发送完一帧串行数据后,由硬件置1,其清零必须由软件完成。2)RI为串行口接收中断请求标志位,接收完一帧串行数据后,由硬件置1,其清零必须由软件完成。在在MCS-51单片机串行口中,以单片机串行口中,以TI和和RI的逻辑的逻辑“
5、或或”作为一作为一个内部中断源,二者之一置位就可以产生串行口中断请求,然后个内部中断源,二者之一置位就可以产生串行口中断请求,然后在中断服务程序中测试这两个标志位,以决定是发送中断还是接在中断服务程序中测试这两个标志位,以决定是发送中断还是接收中断。收中断。3.中断允许控制寄存器(IE)中断允许控制寄存器的格式如图5-4所示。EX0ET0EX1ET1ES EA D7 D6 D5 D4 D3 D2 D1 D0 IE(A8H)图图5-4 中断允许控制寄存器的格式中断允许控制寄存器的格式 寄存器中用于控制中断的共6位,实现中断管理,其作用如下。EA为中断允许总控制位。EA=1时,CPU开放中断;EA
6、=0时,CPU屏蔽所有中断请求。ES、ET1、EX1、ET0、EX0为对应的串行口中断、定时/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断的中断允许位。对应位为1时,允许其中断,对应位为0时,禁止其中断。MCS-51单片机中断系统的管理是由中断允许总控制EA和各中断源的控制位联合作用实现的,缺一不可。MCS-51单片机系统复位后,IE各位均清零,即禁止所有中断。4.中断优先级控制寄存器(IP)中断优先级控制寄存器的格式如图5-5所示。PX0PT0PX1PT1PS D7 D6 D5 D4 D3 D2 D1 D0 IP(B8H)图图5-5 中断优先级控制寄存器的格式中断优先级
7、控制寄存器的格式图5-5 中断优先级控制寄存器的格式 MCS-51单片机规定了两个中断优先级:高级中断和低级中断。用中断优先级寄存器(IP)的5位状态管理5个中断源的优先级别,即PS、PT1、TX1、PT0、PX0分别对应串行口中断、定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断。当相应位为1时,设置其为高级中断;相应位为0时,设置其为低级中断。5.1.3 中断优先级结构 MCS-51中断系统具有两级优先级(由IP寄存器把各中断源的优先级分为高优先级和低优先级),它们遵循下列两条基本原则:1).为了实现中断嵌套,高优先级中断请求可以中断低优先级的中断服务,反之,则不
8、允许;2).同等优先级中断源之间不能中断对方的中断服务过程。为了实现上述两条原则,中断系统内部包含两个不可寻址的优先级状态触发器。其中一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其他中断的响应;另一个触发器则指出某低优先级的中断正得到服务,所有同级的中断都被阻止,但不阻止高优先级中断源。当同时收到几个同一优先能的中断时,响应哪一个中断源取决于内部查询顺序。其优先级排列如图5-6所示。中断源外部中断0定时器/计数器0溢出定时器/计数器1溢出串行口外部中断1同级内中断优先级别最高最低 图图5-6 中断优先级排列中断优先级排列5.1.4 中断服务程序入口地址 MCS-51单片机5个中断源
9、的中断服务程序入口地址如表5-1所示。中断源中断源中断服务程序入口地址中断服务程序入口地址 外部中断00003H 定时器/计数器0溢出000BH 外部中断10013H 定时器/计数器1溢出001BH 串行口0023H表表5-1 MCS-51中断服务程序入口地址表中断服务程序入口地址表5.1.5 中断请求的撤除在中断请求被响应前,中断源发出的中断请求由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中。一旦某个中断请求得到响应,CPU必须把它的响应标志位复位成0状态,否则MCS-51就会因中断未能得到及时撤除而重复响应同一中断请求,这是绝对不允许的。MCS-51单片机有5个中断源,但
10、实际上只分属于3种中断类型。这3种类型是:外部中断、定时器溢出中断和串行口中断。对于这3种中断类型的中断请求,其撤除方法是不同的。1.定时器溢出中断请求的撤除 TF0和TF1是定时器溢出中断标志位,它们因定时器溢出中断请求的输入而置位,因定时器溢出中断得到响应而自动复位成0状态。因此,定时器溢出中断源的中断请求是自动撤除的,用户根本不必专门为它们撤除。2.串行口中断请求的撤除TI和RI是串行口中断的标志位,中断系统不能自动将它们撤除,这是因为MCS-51进入串行口中断服务程序后常需要对它们进行检测,以测定串行口发生了接收中断还是发送中断。为了防止CPU再次响应这类中断,用户应在中断服务程序的适
11、当位置处通过指令将它们撤除:CLR TI ;撤除发送中断 CLR RI ;撤除接收中断若采用字节指令,则也可采用如下指令:ANL SCON,#0FCH;撤除发送和接收中断 或采用位判断清除指令:JBC TI,rel;判断TI标志是否置位,若置位则跳转并撤除发送中断 JBC RI,rel;判断RI标志是否置位,若置位则跳转并撤除接收中断 3.外部中断的撤除外部中断请求有两种触发方式:电平触发和负边沿触发。对于这两种不同的中断触发方式,MCS-51撤除它们的中断请求的方法是不相同的。在负边沿触发方式下,外部中断标志IE0和IE1是依靠CPU两次检测 或 上触发电平状态而设置的。因此,芯片设计者使C
12、PU在响应中断时自动复位IE0或IE1,就可撤除 或 上的中断请求,因为外部中断源在中断服务程序时是不可能再在 或 上产生负边沿,而使相应的中断标志IE0或IE1置位。在电平触发方式下,外部中断标志IE0和IE1是依靠CUP检测或上低电平而置位的。尽管CPU响应中断时相应中断标志IE0或IE1,能自动复位成状态,但若外部中断源不能及时撤除它在或上的低电平,就会再次使已经变的中断IE0或IE1置位,这是绝对不允许的。因此,电平触发型外部中断请求的撤除必须使或上的低电平随着其中断被CPU响应而变为高电平。一种可供采用的电平型外部中断的撤除电路如图5-7所示。INT08051P1.0Q DSDCP1
13、外部中断信号图图5-7 电平型外部中断的撤除电路电平型外部中断的撤除电路由图可见,当外部中断源产生中断请求时,D触发器的复位成状态,Q端的低电平被送到 ,该低电平被8051检测后就使中断标志IE0置。8051响应 上的中断请求可使 中断服务程序执行,故可以在中断服务程序开头安排如下程序来使 上的电平拉高。INSVR:ORL P1,#01H ANL P1,#0FEH CLR IE0 END 8051执行上述程序就可使P1.0上产生一个宽度为两个机器周期的负脉冲。在该负脉冲作用下,D触发器被置位成1状态,上的电平也因此而变高,从而撤除了其上的中断请求。5.1.6 中断系统的初始化 MCS-51中断
14、系统功能,是可以通过上述特殊功能寄存器进行统一管理的,中断系统初始化是指对这些特殊功能的寄存器中各控制位进行赋值。中断系统初始化步骤如下:1).置位相应中断源的中断允许;2).设定所有中断源的中断优先级;3).若为外部中断,则应规定低电平还是负边沿的中断触发方式。例如,用 为低电平触发的中断系统初始化程序。1.采用位操作指令 SETB EA ;SETB EX0 ;开 中断 中断 SETB PX0 ;令 为 高优先级 CLR IT0 ;令 为 电平触发 2.采用字节操作指令 MOV IE,#81H ;开 中断 ORL IP,#01H ;令 为高优先级 ORL TCON,#0FEH ;令 电平触发
15、 显然,采用位操作指令进行中断系统初始化是比较简单的。因为用户不必记住各控制位在寄存器中的位置,只需按各控制位名称来设置,而各控制位名称是比较容易记忆的。5.2 中断的编程及应用实例中断的编程及应用实例 C51语言编译器支持在C语言源程序中直接编写51单片机的中断服务函数程序,从而减轻了采用汇编语言编写中断服务程序的烦琐程序。为了能在C语言源程序中直接编写中断服务函数,C51语言编译器对函数的定义有所扩展,增加了一个扩展关键字interrupt。关键字interrupt是函数定义时的一个选项,加上这个选项即可将函数定义成中断服务函数。定义中断服务函数的一般形式为:函数类型 函数名(形式参数表)
16、interrupt n using minterrupt 后面的n 是中断号,n的取值范围为031。编译器从8n+3处产生中断向量,具体的中断号n和中断向量取决于不同的51系列单片机芯片。对于MCS-51单片机而言,外部中断0中断、定时器/计数器0溢出中断、外部中断1中断、定时器/计数器1溢出中断、串行口发送/接收中断对应的中断号分别为0、1、2、3、4。using后面的m是选择哪个工作寄存器区,分别为0、1、2、3。【例5-1】外部中断在本实例中,首先通过P1.7口点亮发光二极管,然后外部输入一脉冲串,则发光二极管亮、暗交替。电路如图5-8所示。+5VP1.7AT89C51图图5-8 发光二
17、极管交替亮、暗发光二极管交替亮、暗 编写程序如下:#includesbit P1_7=P17;void interrupt0()interrupt 0 using 0 /定义定时器0 P1_7=!P1_7;void main()EA=1;/开中断 IT0=1;/外部中断0脉冲触发 EX0=1;/外部中断0 P1_7=0;do while(1);【例5-2】如图5-9所示,8只LED阴极接至单片机P0口,两开关S0、S1分别接至单片机引脚P3.2和P3.3。编写程序控制LED状态:按下S0后,如果8只LED为熄灭状态,则点亮,如果8只LED为点亮状态,则保持;按下S1后,不管8只LED是熄灭状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 中断 系统 课件
限制150内