中断系统5.1中断控制方式5.2MCS-51单片机的中断系统5.3中断的C51编程5.4外部中断的扩展■什么是中断生活举例:你正在家中看书——突然电话铃响了——你在书上做个记号——去接电话并和来电话的人交谈——门铃突然响了——你让打电话的人先等等——你去开门并和来人交谈——谈话结束后关好门——回到电话机旁继续通话——通话结束后放下电话——回到房间从做记号处继续看书。这是一个典型的中断现象,即正常的工作过程被某个突发事件(内部的或外部的)打断。发生中断后执行的另一工作仍然可能被新的时间打断(中断嵌套)。分析:某一特定时刻有多项任务需要一个人(CPU)做,但又不能同时做多项任务,只能采取中断方式“穿插完成”。第5章中断系统■中断的基本概念所谓中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理时往往用到中断系统,计算机与外部设备间传送数据及实现人机联系也常常采用中断方式。5.1中断控制方式■中断的基本概念在中断系统中,通常将CPU正常运行的程序称为主程序,把引起中断的设备或事件称为中断源。由中断源向CPU所发出的请求中断的信号称为中断请求信号,CPU接受中断申请终止现行程序而转去执行中断服务程序称为中断响应,服务于中断事件的程序称为中断服务程序,也称为中断处理程序。现行程序被中断的地方称为断点,执行完中断服务程序后返回至源程序断点处称为中断返回,系统处理中断的整个过程称为中断。5.1中断控制方式■引进中断的优点◆分时操作:计算机与外部设备交换信息时,存在着高速CPU和低速外设之间处理速度的矛盾。若采用软件查询方式,则不但占用了CPU操作时间,而且响应速度慢。中断功能正好解决了这个矛盾。每当外设做完一件事后,就发出中断申请,请求CPU中断其正在执行的程序,转去执行中断服务程序。中断处理完成后,CPU恢复执行主程序,外设仍然继续工作。这样,CPU就可以同时命令多个外设(如键盘、打印机等)同时工作,从而提高CPU的工作效率。5.1中断控制方式■引进中断的优点◆实时处理:在实时控制中,现场的各个参数随时间和现场情况不断变化。有了中断功能,外界的这些变化量可根据要求随时向CPU发中断请求,要求CPU及时处理,这种效果是查询方式无法做到的。◆故障处理:计算机在运行过程中,难免会出现一些无法预料的故障,如存储出错、运算溢出和电源突跳等,有了中断功能,当出现上述故障情况时,CPU就可以及时转去执行故障处理程序,自行处理故障而无需停机。5.1中断控制方式■51单片机中断源◆外部设备中断源计算机的输入/输出设备,如键盘、磁盘驱动器、打印机等,可通过接口电路向CPU申请中断。◆故障源故障源是产生故障信息的来源。它作为中断源,可以使CPU以中断方式对已经发生的故障做及时处理。计算机的故障源有内部和外部之分。内部故障源一般是指执行指令时产生的错误情况,如除法中除以零,这种故障也称为内部软件中断;外部中断源主要有电源掉电等情况,当电源掉电而将至一定数值时,即发出中断请求,由计算机中断系统自动响应,并进行相应处理。5.1中断控制方式■51单片机中断源◆控制对象中断源计算机做实时控制时,被控对象常常用作中断源。例如:电压、电流、温度等超过其上限或下限时,以及继电器、开关闭合与断开时,都可以作为中断源向CPU申请中断。◆定时/计数脉冲中断源定时器/计数器脉冲中断也有内部和外部之分。内部定时中断是由定时器/计数器溢出而自动产生的;外部计数中断则是由外部脉冲通过CPU的中断请求输入端引起的。5.1中断控制方式■中断系统需解决的基本问题◆中断源:中断请求信号的来源。包括中断请求信号的产生及该信号怎样被CPU有效地识别。而且要求中断请求信号产生一次,只能被CPU接收和处理一次,即不能一次中断申请被CPU多次响应。这就涉及到中断请求信号的及时撤除问题。◆中断响应与返回:CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地执行。中断响应与返回的过程中涉及到CPU响应中断的条件、现场保护等问题。5.1中断控制方式■中断系统需解决的基本问题◆优先级控制(优先级排队):一个计算机应用系统,特别是计算机实时测控应用系统,往往有多个中断源,各中断源所要求的处理具有不同的轻重、缓急程度。与人处理问题的思路一样,希望重要紧急的事件先处理,而且如果当前处于正在处理某个事件的过程中,有更重要、更紧急的事件到来,就应当暂停当前事件的处理,转去处理新事件。这就是中断系统优先级控制所要解决的问题。中断优先级的控制形成了中断嵌套。5.1中断控制方式■中断系统需解决的基本问题◆中断嵌套:当CPU响应某个中断请求而正在进行中断处理时,若有更高优先级别的中断源发出中断申请,则CPU将自动中断正在执行的中断服务程序,并保存该中断程序断点(类似于子程序嵌套),转而去执行高级别中断的中断服务程序;当高级别中断处理完毕后,再继续执行被中断的中断处理程序。这个过程被称为中断嵌套。只有高级别的中断能中断当前的中断服务程序,同级别或者低级别的中断不能中断当前的中断服务程序。5.1中断控制方式■51单片机中断源◆外部中断外部中断是指从单片机外部引脚INT0、INT1输入中断请求信号的中断,即外部中断源有两个。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0、INT1输入。外部中断请求有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。5.2MCS-51单片机的中断系统■51单片机中断源◆外部中断特殊功能寄存器TCON的格式定义如下:IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或IT1)被设置为“0”,则选择外部中断为电平触发方式;IT0(或IT1)被设置为“1”,则选择外部中断为跳变触发方式。5.2MCS-51单片机的中断系统IE1IT1IT0IE0D7D6D5D4D3D2D1D0TCON字节地址88H■51单片机中断源◆TCON的格式IE0(IE1):外部中断0(或外部中断1)的中断请求标志位。当IT0(或IT1)=0,即电平触发方式时,CPU在每个机器周期的S5P2采样INTx(x=0,1)。若INTx引脚为低电平,将直接触发外部中断。跳变触发方式时,若第一个机器周期采样到INTx引脚为高电平,第二个机器周期采样到INTx引脚为低电平时,由硬件置位IE0(或IE1),并以此来向CPU请求中断。当CPU响应中断转向中断服务程序时由硬件将IE0(或IE1)清零。5.2MCS-51单片机的中断系统■51单片机中断源◆外部中断对于跳变触发的外部中断,CPU在每个机器周期都采样INTx。为了保证检测到负跳变,输入到INTx引脚上的高电平与低电平至少应保持1个机器周期。对于电平触发的外部中断,由于CPU对INTx引脚没有控制作用,也没有相应的中断请求标志位,因此需要外接电路来撤除中断请求信号。5.2MCS-51单片机的中断系统■51单片机中断源◆外部中断示例外部中断请求信号通过D触发器加到单片机引脚上。当外部中断请求信号使D触发器的CLK端发生正跳变时,由于D端接地,Q端输出0,向单片机发出中断请求。5.2MCS-51单片机的中断系统INTx51单片机CLKSQD外部中断请求信号P1.0■51单片机中断源◆外部中断示例CPU响应中断后,利用一根口线,如P1.0作应答线,在中断服务程序中可用如下两条指令ANLP1,#0FEHORLP1,#01H来撤除中断请求。第一条指令使P1.0为0,而P1口其它各位的状态不变。由于P1.0与直接置1端S相连,故D触发器Q=1,撤除了中断请求信号。第二条指令将P1.0变成1,从而使S=1,使以后产生的新的外部中断请求信号又能向单片机申请中断。5.2MCS-51单片机的中断系统■51单片机中断源◆内部中断内部中断是单片机芯片内部产生的中断。MCS-51单片机(51子系列)的内部中断有定时器/计数器T0、T1的溢出中断,串行口的发送/接收中断。当定时器/计数器T0、T1的定时(或计数)溢出时由硬件自动置位TCON的TF0或TF1位,同时向CPU申请中断。CPU响应中断而转向中断服务程序时,由硬件自动将TF0或TF1清零,即CPU响应T0和T1中断后能自动撤除中断请求信号。5.2MCS-51单片机的中断系统■51单片机中断源◆内部中断当串行口发送完或接收完一帧信息,由接口硬件自动置位SCON的TI或RI,以此向CPU申请中断。CPU响应中断后,接口硬件不能自动将TI或RI清零,即CPU响应中断后不能自动撤除中断请求信号,需用户采用软件的方法将TI或RI清零,来撤除中断请求信号。5.2MCS-51单片机的中断系统■中断控制◆中断允许控制(IE)MCS-51单片机中没有专设的开中断和关中断指令,对各中断源的中断开放或关闭是由内部的中断允许寄存器IE的各位来控制的。IE各位的定义如下:EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。EA的作用是使中断允许形成两级控制。即各中断源首先受EA位的控制;其次还要受各中断源自己的中断允许总控位控制。5.2MCS-51单片机的中断系统ET1EX1EX0ET0D7D6D5D4D3D2D1D0IE字节地址A8HESET2--EA■中断控制◆中断允许控制(IE)ET2:定时器/计数器T2的溢出中断允许位,只用于52子系列,51子系列无此位。ET2=0,禁止T2中断;ET2=1,允许T2中断。ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位。T1=0,禁止T1中断;ET1=1,允许T1中断。5.2MCS-51单片机的中断系统■中断控制◆中断允许控制(IE)EX1:外部中断1的中断允许位。EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EX0:外部中断0的中断允许位。EX0=0,禁止外部中断0中断;EX0=1允许外部中断0中断。5.2MCS-51单片机的中断系统■中断控制◆中断优先级控制51单片机的中断源有两个中断优先级,可实现二级中断嵌套。中断系统遵循如下三条规则:(1)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。(2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。(3)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。5.2MCS-51单片机的中断系统■中断控制◆中断优先级控制中断优先级控制规则中前两条是靠中断系统中的两个优先级状态触发器来保证的。这两个触发器分别用来指示CPU是否正在执行高优先级及低优先级的中断服务程序。当某个中断得到响应时,由硬件根据其优先级将相应的一个优先级状态触发器置1。若高优先级的状态触发器为1,则屏蔽所有后来的中断请求;若低优先级的状态触发器为1,则屏蔽后来的同一优先级的中断请求。当中断相应结束后,对应的优先级状态触发器被硬件自动清零。5.2MCS-51单片机的中断系统■中断控制◆中断优先级寄存器—IPPT2:定时器/计数器T2的中断优先级控制位,只用于52子系列。PS:串行口的中断优先级控制位。PT1:定时器/计数器T1的中断优先级控制位。PX1:外部中断1的中断优先级控制位。PT0:定时器/计数器T0的中断优先级控制位。PX0:外部中断0的中断优先级控制位。5.2MCS-51单片机的中断系统PT1PX1PX0PT0D7D6D5D4D3D2D1D0IP字节