1、中断系统及其应用本章主要内容本章主要内容v中断基本概念中断基本概念v中断系统结构及中断控制中断系统结构及中断控制v中断处理过程中断处理过程第一节第一节 中断基本概念中断基本概念一、为什么引入中断概念?一、为什么引入中断概念?单片机系统运行时,单片机系统运行时,CPU经常需要与外部输入输出设备交换信经常需要与外部输入输出设备交换信息,但息,但CPU速度比外设速度要快得多,为了解决快速速度比外设速度要快得多,为了解决快速CPU与慢速外与慢速外设间的矛盾,单片机系统中需要广泛采用中断控制方式。设间的矛盾,单片机系统中需要广泛采用中断控制方式。为了满足单片机为了满足单片机CPU与外设交换信息的需要!与
2、外设交换信息的需要!单片机单片机CPU与外设交换信息的方式通常有三种:与外设交换信息的方式通常有三种:v 无条件传送方式无条件传送方式v 查询传送方式查询传送方式v 中断传送方式中断传送方式二、单片机二、单片机CPU与外设交换信息的方式与外设交换信息的方式 无条件传送方式无条件传送方式 无条件传送方式又称无条件传送方式又称同步传送同步传送,此方式下,此方式下,CPU与外设之间与外设之间进行数据传送时,不考虑外设状态,即进行数据传送时,不考虑外设状态,即CPU认为外设在任何条件认为外设在任何条件下都是处于下都是处于“准备好准备好”的状态。因此,这种传送方式下,的状态。因此,这种传送方式下,CPU
3、不不需要了解外设状态信息,只需要在程序中加入访问外设的指令,需要了解外设状态信息,只需要在程序中加入访问外设的指令,就可以实现就可以实现CPU与外设间的数据传送。与外设间的数据传送。该方式简单,但因为不知道外设的状态,导致传送数据时容易该方式简单,但因为不知道外设的状态,导致传送数据时容易出错,而且效率不高,已经很少被使用!出错,而且效率不高,已经很少被使用!查询传送方式查询传送方式 查询传送方式又称查询传送方式又称条件传送方式条件传送方式。CPU在传送数据之前,首先查在传送数据之前,首先查询外部设备是否处于询外部设备是否处于“准备好准备好”的状态。的状态。输入数据时输入数据时,需要知道外设,
4、需要知道外设是否已经把要输入的数据准备好;是否已经把要输入的数据准备好;输出数据时输出数据时,则需要知道外设是否,则需要知道外设是否已经把上一次单片机输出的数据处理完毕。通过查询,确信外设已处已经把上一次单片机输出的数据处理完毕。通过查询,确信外设已处于于“准备好准备好”状态时,状态时,CPU才发出访问外设的命令,实现数据的输入才发出访问外设的命令,实现数据的输入或输出,否则,或输出,否则,CPU就处于查询等待状态。就处于查询等待状态。该方式保证了数据传送的正确性,但需要查询等待过程!该方式保证了数据传送的正确性,但需要查询等待过程!特别是特别是在连续进行数据传送时,由于在连续进行数据传送时,
5、由于CPU的速度比外设快很多,通常,的速度比外设快很多,通常,CPU在完成一次数据传送后,要等待很长的时间,才能进行下一次在完成一次数据传送后,要等待很长的时间,才能进行下一次的传送,在等待过程中,的传送,在等待过程中,CPU不能进行其他的操作,所以效率比较不能进行其他的操作,所以效率比较低。低。因此,又要保证数据传送的正确性,又要提高效率,最有效的途因此,又要保证数据传送的正确性,又要提高效率,最有效的途径就是采用中断传送方式!径就是采用中断传送方式!中断传送方式中断传送方式 CPU启动外设后,外设与启动外设后,外设与CPU并行独立工作,此时,并行独立工作,此时,CPU可以做可以做其他工作,
6、一旦外设需要其他工作,一旦外设需要CPU处理时,由外设向处理时,由外设向CPU提出请求,在满提出请求,在满足一定条件下,足一定条件下,CPU暂时中止当前的工作暂时中止当前的工作(即现在执行的程序),(即现在执行的程序),转转去为外设服务去为外设服务(执行外设服务程序),外设请求服务处理完后,再回(执行外设服务程序),外设请求服务处理完后,再回到原来被中断的地方,到原来被中断的地方,继续原来的工作继续原来的工作(继续执行原来的程序)。(继续执行原来的程序)。那到底什么是那到底什么是中断呢?中断呢?三、中断概念三、中断概念 在单片机中,当在单片机中,当CPU在执行程序时,由单片机内部或外部的原因在
7、执行程序时,由单片机内部或外部的原因引起的随机事件要求引起的随机事件要求CPU暂时停止正在执行的程序,而转向执行一个暂时停止正在执行的程序,而转向执行一个用于处理该随机事件的程序,处理完后又返回被中止的程序断点处继用于处理该随机事件的程序,处理完后又返回被中止的程序断点处继续执行,这一过程就称为续执行,这一过程就称为中断中断。中断流程图中断流程图中断源分类中断源分类四、其他相关概念四、其他相关概念单片机处理中断的单片机处理中断的4个步骤个步骤 中断请求中断请求 中断响应中断响应 中断处理中断处理 中断返回中断返回中断源中断源中断请求中断请求向向CPU发出中断请求的来源,或引起中断的原因。发出中
8、断请求的来源,或引起中断的原因。中断源要求服务的请求。中断源要求服务的请求。一类来自单片机内部,称之为内部中断源;一类来自单片机内部,称之为内部中断源;一类来自单片机外部,称之为外部中断源。一类来自单片机外部,称之为外部中断源。例:生活中的例:生活中的“中断中断”。某人某人CPU电话铃响了电话铃响了中断源中断源某人某人“看报看报”正常运行的程正常运行的程序序去接电话去接电话响应中断响应中断与朋友聊天与朋友聊天中断服务程序中断服务程序某人继续看报某人继续看报退出中断服务退出中断服务程序,继续运行正常的程序。程序,继续运行正常的程序。五、中断的一般功能五、中断的一般功能中断系统的功能一般包括以下几
9、点:中断系统的功能一般包括以下几点:实现中断优先级排队实现中断优先级排队 实现中断嵌套实现中断嵌套 自动中断响应自动中断响应 实现中断及返回实现中断及返回 实现中断撤除实现中断撤除 分时操作,提高分时操作,提高CPU的工作效率的工作效率 实时处理,提高实时数据的处理时效实时处理,提高实时数据的处理时效 实现中断优先级排队实现中断优先级排队 通常,单片机中有多个中断源,设计人员能按轻重缓急给每个通常,单片机中有多个中断源,设计人员能按轻重缓急给每个中断源的中断请求赋予一定的中断优先级。中断源的中断请求赋予一定的中断优先级。当两个或两个以上的中断源同时请求中断时,当两个或两个以上的中断源同时请求中
10、断时,CPU可通过可通过中断中断优先级排队电路优先级排队电路首先响应中断优先级高的中断请求,等到处理完优首先响应中断优先级高的中断请求,等到处理完优先级高的中断请求后,再来响应优先级低的中断请求。先级高的中断请求后,再来响应优先级低的中断请求。CPU在响应某一中断源中断请求而进行中断处理时,若有中在响应某一中断源中断请求而进行中断处理时,若有中断优先级更高的中断源发出中断请求,断优先级更高的中断源发出中断请求,CPU会暂停正在执行的中断会暂停正在执行的中断服务程序,转向执行中断优先级更高的中断源的中断服务程序,等服务程序,转向执行中断优先级更高的中断源的中断服务程序,等处理完这个高优先级的中断
11、请求后,再返回来继续执行被暂停的中处理完这个高优先级的中断请求后,再返回来继续执行被暂停的中断服务程序。这个过程称为断服务程序。这个过程称为中断嵌套中断嵌套。实现中断嵌套实现中断嵌套 自动自动中断响应中断响应 中断源向中断源向CPU发出的中断请求是随机的。通常,发出的中断请求是随机的。通常,CPU总是在总是在每条指令的最后状态对中断请求信号进行每条指令的最后状态对中断请求信号进行检测检测。当某一中断源发出。当某一中断源发出中断请求时,中断请求时,CPU能根据相关条件能根据相关条件(如中断优先级、是否允许中断如中断优先级、是否允许中断)进行进行判断判断,决定是否,决定是否响应响应这个中断请求。若
12、允许响应这个中断请求,这个中断请求。若允许响应这个中断请求,CPU在执行完相关指令后,会自动完成在执行完相关指令后,会自动完成断点地址压入堆栈断点地址压入堆栈、中断矢中断矢量地址送入程序计数器量地址送入程序计数器PC、撤除本次中断请求标志撤除本次中断请求标志,转入执行相,转入执行相应中断服务程序。应中断服务程序。实现中断及返回实现中断及返回 CPUCPU响应某一中断响应某一中断源的中断请求,转入执源的中断请求,转入执行相应中断服务程序,行相应中断服务程序,在执行中断服务程序最在执行中断服务程序最后的中断返回指令时,后的中断返回指令时,会自动弹出堆栈区中保会自动弹出堆栈区中保存的断点地址,返回到
13、存的断点地址,返回到中断前的原程序中。中断前的原程序中。实现中断撤除实现中断撤除 在响应中断申请以后,返回主程序之前,中断请求应该撤除,在响应中断申请以后,返回主程序之前,中断请求应该撤除,否则,就等于中断申请依然存在,这将影响对其他中断申请的响应。否则,就等于中断申请依然存在,这将影响对其他中断申请的响应。中断的撤除与返回指令并不是一回事,有的中断系统在响应任何中中断的撤除与返回指令并不是一回事,有的中断系统在响应任何中断申请之后,都能撤除该中断的申请标志。但断申请之后,都能撤除该中断的申请标志。但MCS-51中断系统只中断系统只能对一部分中断申请在响应后自动撤除。能对一部分中断申请在响应后
14、自动撤除。分时操作,提高分时操作,提高CPU的工作效率的工作效率中断系统的存在,可以使中断系统的存在,可以使CPU与外设并行工作。与外设并行工作。实时处理,提高实时数据的处理时效实时处理,提高实时数据的处理时效 当单片机用于实时控制时,请求当单片机用于实时控制时,请求CPU提供服务是随机发生的,提供服务是随机发生的,有了中断系统,有了中断系统,CPU就可以立即响应并加以处理。就可以立即响应并加以处理。六、中断服务程序与子程序的异同六、中断服务程序与子程序的异同同:同:都属于子程序都属于子程序异:异:调用子程序的时间是事先安排好的,但调用中断服务程序是调用子程序的时间是事先安排好的,但调用中断服
15、务程序是由外设决定的,并不是人为安排的。由外设决定的,并不是人为安排的。第二节第二节 中断系统结构及中断控制中断系统结构及中断控制一、一、MCS-51系列单片机中断系统结构系列单片机中断系统结构从上图可以看出,从上图可以看出,MCS-51系列单片机有:系列单片机有:5个中断请求源:个中断请求源:INT0、INT1、T0、T1、Tx/Rx 4个中断控制寄存器:个中断控制寄存器:IE、IP、TCON、SCON分别用于确定分别用于确定中断的类型中断的类型、中断源的优先级中断源的优先级以及以及中断的开、闭中断的开、闭。二、二、MCS-51系列单片机中断源系列单片机中断源 INT0:外部中断:外部中断0
16、请求,低电平有效请求,低电平有效 INT1:外部中断:外部中断1请求,低电平有效请求,低电平有效 T0:定时:定时/计数器计数器0溢出中断请求溢出中断请求 T1:定时:定时/计数器计数器1溢出中断请求溢出中断请求 Tx/Rx:串行口通信中断请求:串行口通信中断请求当外部对应引脚为低电平时,便请求中断。当外部对应引脚为低电平时,便请求中断。当定时当定时/计数器中计数结果发生计数溢出时,请求中断。计数器中计数结果发生计数溢出时,请求中断。串行口完成一帧数据的发送或接收时,便请求中断。串行口完成一帧数据的发送或接收时,便请求中断。中断源及对应的中断服务程序入口地址:中断源及对应的中断服务程序入口地址
17、:外部中断外部中断0(INT0)0003H外部中断外部中断1(INT1)0013H定时器定时器T0中断(中断(T0)000BH定时器定时器T1中断(中断(T1)001BH串行口中断串行口中断 0023H说明:说明:两个相邻中断源中断服务程序入口地址相距仅两个相邻中断源中断服务程序入口地址相距仅8个单元,一般个单元,一般的中断服务程序的中断服务程序8个存储单元是远远不够的,因此,通常会在相应中个存储单元是远远不够的,因此,通常会在相应中断服务程序入口地址单元存放一条无条件转移指令断服务程序入口地址单元存放一条无条件转移指令LJMP,这样,就,这样,就可以把中断服务程序放在其他区域执行。可以把中断
18、服务程序放在其他区域执行。三、中断控制三、中断控制4个特殊功能寄存器用于中断控制。个特殊功能寄存器用于中断控制。v 定时定时/计数控制器计数控制器TCONv 串行口控制寄存器串行口控制寄存器SCONv 中断允许寄存器中断允许寄存器IEv 中断优先寄存器中断优先寄存器IP 定时定时/计数控制寄存器计数控制寄存器TCON(字节地址为(字节地址为88H)TF1定时定时/计数器计数器T1的溢出中断请求标志位。的溢出中断请求标志位。T1被启动计数后,从初被启动计数后,从初值开始加值开始加1计数,直至计满溢出,硬件使计数,直至计满溢出,硬件使TF11,向,向CPU请求中断。请求中断。TF0定时定时/计数器
19、计数器T0的溢出中断请求标志位。的溢出中断请求标志位。T0被启动计数后,从初被启动计数后,从初值开始加值开始加1计数,直至计满溢出,硬件使计数,直至计满溢出,硬件使TF01,向,向CPU请求中断。请求中断。IE1外部中断外部中断1的中断请求标志位(的中断请求标志位(INT1)IE0外部中断外部中断0的中断请求标志位(的中断请求标志位(INT0)IT1外部中断外部中断1的中断触发控制位的中断触发控制位IT10,外部中断,外部中断1为电平触发方式为电平触发方式IT11,外部中断,外部中断1为边沿触发方式为边沿触发方式IT0外部中断外部中断0的中断触发控制位的中断触发控制位IT00,外部中断,外部中
20、断0为电平触发方式为电平触发方式IT01,外部中断,外部中断0为边沿触发方式为边沿触发方式 当检测到外部中断引脚上存在当检测到外部中断引脚上存在有效中断请求信号有效中断请求信号时,由硬件使时,由硬件使IE11或或IE01,CPU响应中断,转向中断服务程序。响应中断,转向中断服务程序。串行口串行口控制寄存器控制寄存器SCON(字节地址为(字节地址为98H)TI(Transmit)串行口发送中断请求标志位串行口发送中断请求标志位 CPU将一个数据写入发送缓冲器时,就启动发送,每发送完将一个数据写入发送缓冲器时,就启动发送,每发送完一帧串行数据后,硬件自动置位一帧串行数据后,硬件自动置位TI,使,使
21、TI1,则产生中断,要求,则产生中断,要求CPU相应中断,再将下一个数据写入发送缓冲器。相应中断,再将下一个数据写入发送缓冲器。必须在中断服务程序中用软件对必须在中断服务程序中用软件对TI标志清标志清“0”!RI(Receive)串行口接收中断请求标志位串行口接收中断请求标志位每接收完一个串行帧,就硬件置位每接收完一个串行帧,就硬件置位RI。必须在中断服务程序中用软件对必须在中断服务程序中用软件对TI标志清标志清“0”!中断允许中断允许寄存器寄存器IE(字节地址为(字节地址为A8H)EA中断允许总控制位中断允许总控制位EA=1,CPU打开中断打开中断(但各中断源是允许还是禁止,将分别由各自的允
22、许位确定)(但各中断源是允许还是禁止,将分别由各自的允许位确定)EA=0,CPU屏蔽所有中断屏蔽所有中断(即:若(即:若EA=0,则各中断源的允许位即使是允许状态,也被禁止),则各中断源的允许位即使是允许状态,也被禁止)ES串行口中断允许位串行口中断允许位ES=1,允许串行口中断,允许串行口中断ES=0,禁止串行口中断,禁止串行口中断CPU对中断源的开放或屏蔽,由片内的对中断源的开放或屏蔽,由片内的中断允许寄存器中断允许寄存器IE控制。控制。ET1定时定时/计数器计数器T1的溢出中断允许位的溢出中断允许位EX1外部中断外部中断1(INT1)的中断允许位)的中断允许位ET0定时定时/计数器计数器
23、T0的溢出中断允许位的溢出中断允许位EX0外部中断外部中断0(INT0)的中断允许位)的中断允许位ET1=1,允许,允许T1中断中断ET1=0,禁止,禁止T1中断中断EX1=1,允许,允许INT1中断中断EX1=0,禁止,禁止INT1中断中断ET0=1,允许,允许T0中断中断ET0=0,禁止,禁止T0中断中断EX0=1,允许,允许INT0中断中断EX0=0,禁止,禁止INT0中断中断即:即:对应位为对应位为“1”,允许中断;允许中断;对应位为对应位为“0”,禁止中断。禁止中断。例:设置允许片内定时例:设置允许片内定时/计数器中断,禁止其他中断时计数器中断,禁止其他中断时IE寄存器的值。寄存器的
24、值。1 0 0 0 1 0 1 0解:则对应解:则对应IE寄存器的值如下所示寄存器的值如下所示法法 字节操作指令字节操作指令MOV IE,8AH法法 位操作指令位操作指令CLR ES ;CLR EX1;CLR EX0;SETB ET0;SETB ET1;SETB EA;禁止串行口中断禁止串行口中断禁止外部中断禁止外部中断1中断中断禁止外部中断禁止外部中断0中断中断允许定时允许定时/计数器计数器T0中断中断允许定时允许定时/计数器计数器T1中断中断CPU开总中断开总中断 中断优先级中断优先级寄存器寄存器IP(字节地址为(字节地址为B8H)中断优先级中断优先级当两个或两个以上的中断源同时向当两个或
25、两个以上的中断源同时向CPU提出中断申请时,提出中断申请时,CPU会根据系统设计人员安排好的中断源的优先顺序来依次响应中断。会根据系统设计人员安排好的中断源的优先顺序来依次响应中断。中断嵌套中断嵌套CPU正在处理一个中断请求时,又出现了另一个优先级比正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,这时,它高的中断请求,这时,CPU就暂时中止对当前优先级较低的中断源就暂时中止对当前优先级较低的中断源的服务,转去响应优先级更高的中断请求,并为其服务,待服务结束,的服务,转去响应优先级更高的中断请求,并为其服务,待服务结束,再继续执行原来较低级的中断服务程序。再继续执行原来较低级的中断
26、服务程序。MCS-51系列单片机可人工设置的中断优先级为系列单片机可人工设置的中断优先级为2级:级:高优先级高优先级、低优先级低优先级,由,由中断优先级寄存器中断优先级寄存器IP控制。控制。PS串行口中断优先控制位串行口中断优先控制位PS=1,高优先级中断;,高优先级中断;PS=0,低优先级中断。,低优先级中断。PT1定时器定时器T1中断优先级控制位中断优先级控制位PT1=1,高优先级中断,高优先级中断PT1=0,低优先级中断,低优先级中断PX1外部中断外部中断1中断优先级控制位中断优先级控制位PX1=1,高优先级中断,高优先级中断PX1=0,低优先级中断,低优先级中断PT0定时器定时器T0中
27、断优先级控制位中断优先级控制位PT0=1,高优先级中断,高优先级中断PT0=0,低优先级中断,低优先级中断PX0外部中断外部中断0中断优先级控制位中断优先级控制位PX0=1,高优先级中断,高优先级中断PX0=0,低优先级中断,低优先级中断即:即:对应位为对应位为“1”,相应中断,相应中断源设定为源设定为“高优先级高优先级”中断;中断;对应位为对应位为“0”,相应中断,相应中断源设定为源设定为“低优先级低优先级”中断。中断。注意:当系统复位时,注意:当系统复位时,IP值为值为00H,即所有中断源均被设置为低,即所有中断源均被设置为低优先级中断!优先级中断!如果几个同一优先级的中断源同时提出中断申
28、请,则按自然如果几个同一优先级的中断源同时提出中断申请,则按自然优先级来响应中断。优先级来响应中断。中断源中断源外部中断外部中断0(INT0)定时定时/计数器中断(计数器中断(T0)外部中断外部中断1(INT1)定时定时/计数器中断(计数器中断(T1)串行口中断串行口中断自然优先级自然优先级最高级最高级最低级最低级四、中断系统初始化四、中断系统初始化就是对之前所介绍的就是对之前所介绍的4个中断控制寄存器的值进行设置!个中断控制寄存器的值进行设置!步骤:步骤:设定所用中断源的中断优先级(设定所用中断源的中断优先级(IP)若为外部中断,设定是电平触发还是边沿触发方式(若为外部中断,设定是电平触发还
29、是边沿触发方式(TCON)打开相应的中断源中断(打开相应的中断源中断(IE)例:设定外部中断例:设定外部中断1(INT1)为高优先级中断,用低电平触发方式,)为高优先级中断,用低电平触发方式,对中断系统初始化。对中断系统初始化。中断优先级寄存器中断优先级寄存器IP:PSPT1PX1PT0PX0定时定时/计数控制寄存器计数控制寄存器TCON:TF1TR1TF0TR0IE1IT1IE0IT0中断允许寄存器中断允许寄存器IE:EAESET1EX1ET0EX0解:题目中涉及到的中断控制寄存器如下:解:题目中涉及到的中断控制寄存器如下:法法 字节操作指令字节操作指令MOV IP,04H;ANL TCON
30、,0FBH;MOV IE,84H;设定中断优先级设定中断优先级设定设定INT1中断请求,且为低电平触发方式中断请求,且为低电平触发方式设定相应中断源打开设定相应中断源打开法法 位操作指令位操作指令SETB PX1;CLR IT1;SETB EA;SETB EX1;设定设定INT1为高优先级中断为高优先级中断设定设定INT1为低电平触发为低电平触发打开中断允许总控制位打开中断允许总控制位打开打开INT1的中断允许位的中断允许位第三节第三节 中断处理过程中断处理过程中断的处理包括以下四个过程:中断的处理包括以下四个过程:v 中断请求中断请求v 中断响应中断响应v 中断处理中断处理v 中断返回中断返
31、回一、中断请求一、中断请求 中断请求是中断源向中断请求是中断源向CPU发出请求中断的信号,要求发出请求中断的信号,要求CPU中中断原来执行的程序,转去为它服务。一般中断请求信号可以是电断原来执行的程序,转去为它服务。一般中断请求信号可以是电平信号,也可以是脉冲信号。中断请求信号应该已知保持到平信号,也可以是脉冲信号。中断请求信号应该已知保持到CPU作出反应时为止。作出反应时为止。二、中断响应二、中断响应 中断响应是在满足中断响应是在满足CPU的中断响应条件后,的中断响应条件后,CPU对中断源中断对中断源中断请求的回答。请求的回答。CPU的中断响应条件:的中断响应条件:(1)有中断源发出中断请求
32、。)有中断源发出中断请求。(2)中断总允许位)中断总允许位EA=1。(3)请求中断的中断源的中断允许位为)请求中断的中断源的中断允许位为1。中断处理就是执行中断服务程序,从中断入口地址开始执行,中断处理就是执行中断服务程序,从中断入口地址开始执行,直到返回指令直到返回指令(RETI)为止。此过程一般包括三部分内容:为止。此过程一般包括三部分内容:(1)保护现场)保护现场(2)处理中断源的请求)处理中断源的请求(3)恢复现场)恢复现场三、中断处理三、中断处理四、中断返回四、中断返回 中断返回是指中断服务完成后,中断返回是指中断服务完成后,CPU返回到原程序的断点返回到原程序的断点(即即原来断开的
33、位置原来断开的位置),继续执行原来的程序。,继续执行原来的程序。中断返回通过执行中断返回指令中断返回通过执行中断返回指令RETI来实现。来实现。切忌:不能用切忌:不能用RET指令代替指令代替RETI指令!指令!中断请求的撤除中断请求的撤除 CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。不同中断源中断请求的撤除方法是不一样的。否则会引起另一次中断。不同中断源中断请求的撤除方法是不一样的。在在CPU响应中断后,硬件响应中断后,硬件不能清除不能清除中断请求标志中断请求标志TI和和RI,而要由,而要由软件来清除软件来
34、清除相应的标志。相应的标志。定时定时/计数器溢出中断请求的撤除计数器溢出中断请求的撤除 CPU在响应中断后,硬件会在响应中断后,硬件会自动清除自动清除中断请求标志中断请求标志TF0或或TFl。串行口中断的撤除串行口中断的撤除 外部中断为外部中断为电平触发方式电平触发方式时,时,CPU响应中断后,硬件会自动清响应中断后,硬件会自动清除中断请求标志除中断请求标志IE0或或IEl,但由于加到,但由于加到INT0或或INT1引脚的外部中断引脚的外部中断请求信号并未撤除,中断请求标志请求信号并未撤除,中断请求标志IE0或或IEl会再次被置会再次被置1,所以在,所以在CPU响应中断后应立即撤除响应中断后应
35、立即撤除INT0或或INT1引脚上的低电平。引脚上的低电平。外部中断的撤除外部中断的撤除 外部中断为外部中断为边沿触发方式边沿触发方式时,时,CPU响应中断后,硬件会自动清响应中断后,硬件会自动清除中断请求标志除中断请求标志IE0或或IEl。例:例:P1口做输出口,控制八只灯口做输出口,控制八只灯(P1口输出低电平时灯被点亮口输出低电平时灯被点亮),利,利用手控单脉冲信号作为外部中断信号,控制八只灯按一定的规律循用手控单脉冲信号作为外部中断信号,控制八只灯按一定的规律循环点亮。环点亮。解:解:手控单脉冲信号作为外部中断信号由手控单脉冲信号作为外部中断信号由INT0(P3.2)管脚输入管脚输入
36、设置中断允许寄存器设置中断允许寄存器IE中的中的EA、EX0位为位为1;只有一个中断源可不设置优先级别;只有一个中断源可不设置优先级别;中断触发方式设为边沿触发,控制位中断触发方式设为边沿触发,控制位IT0应设置为应设置为1。参考程序:参考程序:ORG 0000H;LJMP MAIN;ORG 0003H;LJMP INT;ORG 0050H;MAIN:SETB EA;SETB EX0;SETB IT0;MOV A,0FEH MOV P1,A SJMP$;ORG 0100H;INT:RL A;MOV P1,A RETI END程序入口程序入口转向主程序转向主程序外部中断外部中断0的入口地址的入口
37、地址转向中断服务程序转向中断服务程序主程序存放开始地址主程序存放开始地址打开中断允许总控制位打开中断允许总控制位打开打开INT0的中断允许位的中断允许位INT0的中断触发方式为边沿触发的中断触发方式为边沿触发等待中断等待中断中断程序存放开始地址中断程序存放开始地址中断服务程序中断服务程序例:将例:将P1口的口的P1.0P1.3作为输入位,作为输入位,P1.4P1.7作为输出位,作为输出位,要求利用要求利用8051单片机外部中断方式,将通过开关所设的数据读入单片机外部中断方式,将通过开关所设的数据读入单片机,然后输出驱动发光二极管,以验证低四位输入与高四位输单片机,然后输出驱动发光二极管,以验证
38、低四位输入与高四位输出是否相符,采用外部中断出是否相符,采用外部中断0边沿触发方式。边沿触发方式。分析:分析:当当S4接接a处时,处时,a为低电平,为低电平,b为高电平,则输出到为高电平,则输出到INT0为高电平,为高电平,中断无效;中断无效;当当S4接接b处时,处时,a为高电平,为高电平,b为低电平,则输出到为低电平,则输出到INT0为低电平,为低电平,此时产生外部中断;此时产生外部中断;中断源为中断源为INT0,对应中断入口地址为,对应中断入口地址为0003H;输入输入P1.0P1.3对应输出对应输出P1.4P1.7,即,即P1.0对应对应P1.4,当,当P1.0的的S0关闭后,关闭后,P
39、1.0为低电平,输出到对应为低电平,输出到对应P1.4,则发光二极管导通发,则发光二极管导通发光。光。参考程序:参考程序:ORG 0000H AJMP MAIN;ORG 0003H AJMP INT0;ORG 0100H;MAIN:SETB EX0;SETB IT0;SETB EA;HERE:SJMP HERE;ORG 0200H;INT0:MOV A,#0FFH MOV P1,A;MOV A,P1;SWAP A;MOV P1,A;RETI;END转向主程序转向主程序转向中断服务子程序转向中断服务子程序主程序主程序允许外部中断允许外部中断0中断中断选择边沿触发方式选择边沿触发方式打开打开CPU
40、总中断总中断等待中断等待中断中断服务子程序中断服务子程序先给先给P1口赋口赋8位高电平,使二极管都灭位高电平,使二极管都灭正确输入正确输入P1口数据口数据P1口数据高口数据高4位与低位与低4位互换位互换输出驱动发光二极管发光输出驱动发光二极管发光中断返回中断返回练习题练习题1:1、试编写一段对中断系统进行初始化的程序,使之允许、试编写一段对中断系统进行初始化的程序,使之允许INT0、INT1、T0和串行口中断,且使串行口中断为高优先级中断,和串行口中断,且使串行口中断为高优先级中断,INT0为电平触发为电平触发方式,方式,INT1为边沿触发方式。为边沿触发方式。本章小结(本章小结(1 1)v
41、单片机处理中断有单片机处理中断有中断请求中断请求、中断响应中断响应、中断处理中断处理和和中断返回中断返回四四个步骤。中断源有的来自单片机内部,称为个步骤。中断源有的来自单片机内部,称为内部中断源内部中断源;也有的来自;也有的来自于单片机外部,称为于单片机外部,称为外部中断源外部中断源。v 中断系统的中断系统的功能功能包括进行包括进行中断优先级排队中断优先级排队、实现中断嵌套实现中断嵌套、自动自动响应中断响应中断和和实现中断返回实现中断返回。中断的特点是可以提高。中断的特点是可以提高CPU的工作效率、的工作效率、实现实时处理和故障处理。实现实时处理和故障处理。v 8051中断系统主要由定时器控制
42、寄存器中断系统主要由定时器控制寄存器TCON、串行口控制寄存、串行口控制寄存器器SCON、中断允许寄存器、中断允许寄存器IE、中断优先级寄存器、中断优先级寄存器IP和和硬件查询电路硬件查询电路等组成。等组成。本章小结(本章小结(2 2)v 定时器控制寄存器定时器控制寄存器TCON用于控制定时器的启动与停止,并保存用于控制定时器的启动与停止,并保存T0、T1的溢出中断标志和外部中断的中断标志。的溢出中断标志和外部中断的中断标志。v 串行口控制寄存器串行口控制寄存器SCON的低的低2位位TI和和RI用于保存串行口的接收中用于保存串行口的接收中断和发送中断标志。断和发送中断标志。v 中断允许寄存器中
43、断允许寄存器IE用于控制用于控制CPU对中断的开放或屏蔽以及每个中对中断的开放或屏蔽以及每个中断源是否允许中断。断源是否允许中断。v 中断优先级寄存器中断优先级寄存器IP用于设定各中断源的优先级别。用于设定各中断源的优先级别。本章小结(本章小结(3 3)中断处理过程包括:中断处理过程包括:中断请求中断请求、中断响应中断响应、中断处理中断处理和和中断返回中断返回四个阶段。四个阶段。v 中断请求中断请求是中断源向是中断源向CPU发出请求中断的信号,要求发出请求中断的信号,要求CPU中断原中断原来执行的程序,转去为它服务。来执行的程序,转去为它服务。v 中断响应中断响应是在满足是在满足CPU的中断响
44、应条件之后,的中断响应条件之后,CPU对中断源中断对中断源中断请求的回答。由于设置了优先级,中断可实现两级中断嵌套。请求的回答。由于设置了优先级,中断可实现两级中断嵌套。v 中断处理中断处理就是执行中断服务程序,包括保护现场、处理中断源的请就是执行中断服务程序,包括保护现场、处理中断源的请求和恢复现场三部分内容。求和恢复现场三部分内容。v 中断返回中断返回是指中断服务完成后,返回到原程序的断点,继续执行原是指中断服务完成后,返回到原程序的断点,继续执行原来的程序。来的程序。在中断返回前,要撤消中断请求,不同中断源中断请求的撤在中断返回前,要撤消中断请求,不同中断源中断请求的撤消方法不一样。消方法不一样。中断系统初始化的内容包括中断系统初始化的内容包括开放中断允许开放中断允许、确定中断源的优确定中断源的优先级别先级别和和确定外部中断的触发方式确定外部中断的触发方式。本章小结(本章小结(4 4)