第4章MCS-51单片机的中断系统4.1中断的概念4.2中断系统结构及中断控制4.1中断的基本概念日常生活中中断的例子单片机中的中断概念中断技术的优点什么是中断,我们从生活中的例子引入。看书的例子:你正在看书,突然电话铃响了,......。中断就是正常的工作被外部事件打断了。日常生活中的中断仔细研究一下生活中的中断,对于我们学习计算机中的中断也很有好处。1、什么可以引起中断?生活中有很多事件可以引起中断:有人按了门铃,电话铃响了,你的闹钟铃响了,你烧的水开了......等等诸如此类的事件,我们把可以引起中断的事件称之为中断源。计算机中也有一些可以引起中断的事件,像8051单片机就有5个中断源。2、中断的嵌套与优先级处理设想一下,我们正在看书,电话铃突然响了,同时又有人按了门铃,你该先做那样呢?如果你正在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个很重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不等人上门)你可能会按你通常的习惯去处理。总之这里存在一个优先级问题。优先级问题不仅仅发生在两个或以上的中断同时产生的情况,也发生在一个中断已经产生,又有一个中断产生的情况。如你正在接电话,有人按门铃的情况,或你正在开门与人交谈,又有电话铃了的情况。考虑一下我们会怎么办吧。3、中断的响应过程(看书的例子)当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要来继续看书)。(接电话的例子)电话铃响了我们要到放电话的地方去,门铃响了,我们要到门那边去,也就是说,不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的,这也和计算机中的中断类似,如MCS-51的5个中断源都有各自的中断入口地址,当某个中断源产生中断时,CPU响应中断便到相应的中断入口地址执行程序。外围设备与CPU之间常用的通信方式查询方式中断传输方式直接存储器存取(简称DMA)由于在单片机控制系统中,外设与CPU之间需要传送的数据量较少,对传输率要求不高,一般不用DMA方式,这里也就不介绍。1查询方式查询方式包括查询输出方式和查询输入方式。所谓查询输入方式,是指CPU读外设数据前,先查询外设是否处于准备就绪状态(即外设是否已将数据输出到CPU的数据总线上);查询输出方式是指CPU向外设输出数据前,先查询外设是否处于空闲状态(即外设是否可以接收CPU输出的数据)。下面以CPU向外设输出数据为例,简要介绍查询传输方式的工作过程:当CPU需要向外设输出数据时,先将控制命令(如外设的启动命令)写入外设的控制端口,然后不断读外设的状态口,当发现外设处于空闲状态后,就将数据写入外设的数据口,完成数据的输出过程。查询方式优缺点:硬件开销少、传输程序简单,但缺点是CPU占用率高,因为在外设未准备就绪或处于非空闲状态前,CPU一直处于查询状态,不能执行其他操作,任何时候也只能与一个外设进行数据交换。2中断方式采用中断传输方式就可以克服查询传输方式存在的缺陷:当CPU需要向外设输出数据时,将启动命令写入外设控制口后,就继续执行随后的指令序列,而不是被动等待;当外设处于空闲状态,可以接收数据时,由外设向CPU发出允许数据传送的请求信号——即中断请求信号,如果满足中断响应条件,CPU将暂停执行随后的指令序列,转去执行预先安排好的数据传送程序——称为中断服务程序,CPU响应外设中断请求的过程简称为中断响应;待完成了数据传送后,再返回断点处继续执行被中断了的程序——这一过程称为中断返回。可见,在这种方式中,CPU发出控制命令后,将继续执行控制命令后的指令序列,而不是通过检测外设的状态来确定外设是否处于空闲状态,这不仅提高了CPU的利用率,而且能同时与多个外设进行数据交换——只要合理安排相应中断的优先级以及同优先级中断的查询顺序即可。因此,中断传输方式是CPU与外设之间最常见的一种数据传输方式。计算机中的中断计算机执行正常程序时,系统出现某些急需处理的异常情况和特殊请求,CPU暂时中止现在正在执行的的指令,转去对随机发生的更紧迫事件处理;处理完后,CPU会自动返回原来的程序继续执行。就如:你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。计算机中的中断计算机中的中断中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。二.中断及中断源在计算机控制系统中,把引起中断的事件称为中断源。在单片机控制系统中,常见的中断源有:外部中断,如CPU某些特定引脚电平变化引起的中断。各类定时/计数器溢出中断(即定时时间到或计数器满中断)。串行发送结束中断。串行接收有效中断。电源掉电中断。1.中断源2.中断技术的优点分时操作——CPU可以同多个外设“同时”工作实时处理——CPU及时处理随机事件故障处理——电源掉电、存储出错、运算溢出中断与子程序的最主要区别:何时转移、转向何处?主程序中断服务程序主程序子程序LCALLABCABC:RETRETI第K行第K+1行中断子程序的调用3.中断与子程序调用区别3.中断与子程序调用区别(1)中断出现是随机的,可能出现,也可能不出现,更不知道什么时候会出现,即被中断程序的断点无法预测。而子程序的执行由调用指令LCALL或ACALL实现,只要满足特定条件,一定会发生,断点由程序员控制。(2)中断服务程序入口地址(也称为中断向量)由硬件决定,与CPU类型有关,不能更改。而子程序入口地址由用户安排。(3)子程序中可以任意调用另一子程序,但中断有优先级,同级或低级中断不能打断正在执行的同级或更高优先级中断服务程序。(4)尽管子程序返回指令RET和中断返回指令RETI均会将栈顶两个字节信息装入PC,恢复断点,但RETI还清除相应中断优先级触发器,因此中断返回指令不可用子程序返回指令RET代替。三中断嵌套当多个外设以中断方式与CPU进行数据交换时,可能遇到两个或两个以上外设中断请求同时有效的情形。在这种情况下,CPU先响应哪一外设的中断请求?这就涉及到中断优先级问题。一般说来,为了能够处理多个中断请求,中断控制系统均提供中断优先级控制。有了中断优先级控制后,就可以解决多个中断请求同时有效时,先响应哪一请求中断问题,以及高优先级中断请求可中断低优先级中断处理进程,实现中断嵌套。MCS-51单片机内部有5个中断源,提供两个中断优先级,可实现两级中断嵌套。每一个中断源的优先级的高低都可以通过编程来设定。两级中断嵌套的中断过程如图所示。CPU在执行主程序低级中断请求CPU执行低级中断服务程序高级中断请求CPU执行高级中断服务程序4.2MCS-51中断系统结构及中断控制中断源中断标志中断允许中断优先级MCS-51中断系统结构中断寄存器一、中断源和中断请求标志8051单片机有5个中断请求源:单片机INT0或外部输入中断源INT0(P3.2)INT1或外部输入中断源INT1(P3.3)T0片内定时器T0的溢出T1片内定时器T1的溢出串行口片内串行口发送或接收中断源MCS-51的中断系统——中断标志CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断标志位每一个中断源都有相应的中断标志位;某一个中断源申请中断,相应中断标志位置1。MCS-51的中断系统——中断允许CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断标志位EA——总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断;某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。中断允许ESET0EX0EX1ET1EAIE0TCONSCONINT0IT0=0IT0=1INT1IT1=0IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级矢量地址高级中断请求自然优先级矢量地址低级中断请求PX0PT0PX1PT1PSIEIPMCS-51的中断系统结构图中断标志位中断源允许总允许中断优先级TF1TF0IE1IT1IE0IT0TCONT1溢出中断标志(TCON.7):T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。76543210TCON寄存器——T0和T1控制寄存器TF1TF0IE1IT1IE0IT0TCON88H外部中断INT1中断标志位(TCON.3):IE1=1,外部中断1向CPU申请中断外部中断INT1触发方式控制位(TCON.2):IT1=0,电平触发方式IT1=1,下降沿触发方式76543210TCON寄存器——T0和T1控制寄存器注意:该寄存器可以位寻址。•TF1:定时器1的溢出中断标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断。•TF0:定时器0溢出中断标志。其操作功能同TF1。•IE1:外部中断1标志。IE1=1,外部中断1向CPU申请中断。•IT1:外中断1触发方式控制位。当IT1=0时,外部中断1控制为电平触发方式。当IT1=1时,外部中断1控制为边沿触发方式。•IE0:外部中断0中断标志。其操作功能与IE1相同。•IT0:外中断0触发方式控制位。其操作功能与IT1相同。返回TI(SCON.1)——串行发送中断标志。RI(SCON.0)——串行接收中断标志。TIRISCON寄存器——串行口控制寄存器SCON98H76543210注意:该寄存器可以位寻址。TI:串行发送中断标志CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。注意:CPU响应中断时并不清除TI,必须由软件清除。RI:串行接收中断标志在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。注意:CPU在响应中断时不会清除RI,必须由软件清除IEA8HEAESET1EX1ET0EX0例:允许定时器T0中断:SETBEASETBET0或MOVIE,#82H76543210注意:该寄存器可以位寻址。IE寄存器—中断允许寄存器•EA:总中断允许控制位。EA=1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA=0,禁止所有中断。•ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。•ET1:定时器1中断允许位。ET1=1,允许定时器1中断;ET1=0,禁止定时器1中断。•EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。•ET0:定时器0中断允许位。ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断。•EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。51单片机有两个中断优先级——高级和低级专用寄存器IP为中断优先级寄存器,用户可用软件设定相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级系统复位时,均为低优先级该寄存器可以位寻址PSPT1PX1PT0PX0IP寄存器——中断优先级寄存器IPB8H76543210•PS:串行口中断优先控制位PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。•PT1:定时器T1中断优先控制位PT1=1,设定定时器T1中断为高优先级中断;PT1=0,设定定时器T1中断为低优先级中断。•PX1:外部中断1中断优先控制位PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外