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

链接地址:https://www.31ppt.com/p-1561038.html