1、第五章第五章 MCS-51系列单片机的中断系统第一节 中断的概念5.1.1中断概述1.中断的概念 当CPU正在处理某件事情时,外部发生了另一件事情,要求CPU处理,若CPU响应这个事件信号,则它暂时终止当前的工作,转去处理正在发生的事件,处理完成后,再回到被中断的地方,继续做原来的工作,这一过程称为中断。2、中断的优点1)实现分时操作 采用中断技术后,快速的CPU和慢速的外设可以各做各的事情。2)进行实时处理 任何数据在任何时间都有可能向CPU发出中断申请,要求处理。利用中断技术,CPU可以及时响应和处理来自内部功能模块或外部设备的中断请求,并为其服务,以满足实时处理和控制的要求。CPU 会根
2、据当时的情况及时做出反应,进行实时控制。3)故障处理 计算机系统在运行过程中往往会出现一些异常情况,利用中断技术就可以通过中断系统及时向CPU请求中断,做紧急故障处理,当正常供电后可继续执行原来的程序。4)待机状态的唤醒 在单片机嵌入式系统的应用中,为了减少电源的功耗,当系统不处理任何事物,处于待机状态时,可以让单片机工作在休眠的低功耗方式。5.1.2中断处理过程 在中断系统中,通常将CPU处在正常情况下运行的程序称为主程序,把产生申请中断信号的单元和事件称为中断源,由中断源向CPU所发出的申请中断信号称为中断请求信号,CPU接受中断申请停止现行程序的运行而转向为中断服务称为中断响应,为中断服
3、务的程序称为中断服务程序或中断处理程序。现行程序打断的地方称为断点,执行完中断处理程序后返回断点处继续执行主程序称为中断返回。5.1.3中断系统应具备的功能1)实现中断及返回 当某个中断源发出中断申请时,CPU能根据其轻重程度决定是否给予响应。若响应了中断申请,则CPU必须执行完正在执行的指令,在当前指令执行后,通过堆栈保护断点和现场,然后转到中断服务子程序入口,执行该程序。中断处理完成后,再恢复现场和断点,CPU 返回断点,继续执行主程序。2)实现中断优先级排队 在系统中存在多个中断源,当多个中断源同时发出中断申请时,CPU 能找到中断优先级最高的中断源,响应其中断请求。3)实现中断嵌套 当
4、CPU响应某一中断源的中断请求,进行中断处理时,又有级别更高的中断源向CPU发出中断申请,则CPU会暂停当前中断的处理程序,转而响应级别更高的中断请求。直到高级中断处理完成后,才返回继续处理前面中断的中断程序。5.1.4中断源、中断信号、中断向量1、中断源 中断源是指能够向CPU发出中断请求信号的部件和设备。在一个系统中,往往存在多个中断源。对于单片机讲,中断源一般可分为内部中断源和外部中断源。2、中断信号 中断信号是指内部或外部中断源产生的中断申请信号,这个中断信号往往是电信号的某种变化形式,通常有以下几种类型:脉冲的上升沿或下降沿(上升沿触发型或下降沿触发型)高电平或低电平(电平触发型)电
5、平的变化(状态变化触发型)3、中断向量 中断源发出的请求信号被CPU检测到之后,如果单片机的中断控制系统允许响应中断,CPU会自动转移,执行一个固定的程序空间地址中的指令。这个固定的地址称作中断入口地址,也叫做中断向量。中断入口地址往往是由单片机内部硬件决定的。5.1.5中断优先级和中断嵌套 由于一个单片机会有若干个中断源,CPU可以接收若干个中断源发出的中断请求。但在同一时刻,CPU只能响应这些中断请求中的其中一个。为了避免CPU同时响应多个中断请求带来的混乱,在单片机中为每一个中断源赋予一个特定的中断优先级。对于中断优先级的确定,通常是由单片机的硬件结构规定的。一般的确定规则方式为两种:1
6、)某中断对应的中断向量地址越小,其中断优先级越高(硬件确定方式)。2)通过软件对中断控制寄存器的设定,改变中断的优先级(用户软件可设置方式)。5.1.6中断响应条件与中断控制中断的屏蔽 单片机拥有众多中断源,但在某一具体设计中通常并不需要使用所有的中断源,或者在系统软件运行的某些关键阶段不允许中断打断现行程序的运行,这就需要一套软件可控制的中断屏蔽/允许系统。因而从对中断源的控制角度讲,中断源还可分成非屏蔽中断、可屏蔽中断和软件中断。2)中断控制与中断响应条件 在单片机中,对应每一个中断源都有一个相应的中断标志位,该中断标志位将占据中断控制寄存器中的一位。当单片机检测到某一中断源产生符合条件的
7、中断信号时,其硬件会自动将该中断源对应的中断标志位置“1”,这就意味着有中断信号产生了,向CPU申请中断。响应A中断=全局中断允许标志中断A允许标志中断A标志 只有当全局中断允许标志位为“1”(由用户软件设置),中断A允许标志位为“1”,中断A标志位为“1”时,CPU才会响应中断A的请求信号。第二节 MCS-51单片机中断系统5.2.1中断请求源MCS-51提供了5个中断请求源其中:2个外部中断请求INT0(P3.2)和INT1(P3.3)2个片内定时/计数器T0和T1的溢出中断请求TF0(TCON.5)和TF1(TCON.7)1个为片内串行口发送或接收中断请求TI或RI中断入口地址(中断矢量
8、)表中断源中断源入口地址(中断矢量)入口地址(中断矢量)外部中断00003HT0溢出中断000BH外部中断10013HT1溢出中断001BH串行口中断0023H5.2.2与中断源有关的特殊寄存器1、定时器/计数器控制寄存器TCONTCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0 TCON寄存器位定义表IT0:外部中断0触发方式控制位IT0=0,外部中断控制为电平触发方式CPU采样INT0(P3.2)的输入电平,若采到低电平,则认为有中断请求,置位IE0。若采到高电平,则认为无或撤除了中断请求,对IE0清零。注意:在该方式中,CPU响
9、应中断后不能自动使IE0清零,也不能由软件使IE0清零,所以在中断返回前必须清除INT0引脚上的低电平,否则会再次响应中断,造成出错。而且中断请求有效信号(低电平)至少保持两个机器周期。IT0=1,外部中断控制为边沿触发方式CPU采样INT0(P3.2)的输入电平,若连续两次采样,一个周期采样为高电平,接着下一个周期采样为低电平,则IE0置1,表示外部中断0正在向CPU请求中断,直到该中断被CPU响应时IE0由硬件自动清零。注意:在该方式中,为了保证CPU在两个机器周期内检测到先高后低的负跳变,输入的高低电平的持续时间起码要保持一个机器周期。IE0(IE1):外部中断0(1)标志,IE0=1,
10、则表示外部中断0向CPU请求中断。由硬件置1,响应中断后硬件清0。IT1:外部中断1触发方式控制位,功能与IT0类似。IE1:外部中断1标志,功能与IE0类似。TF0:T0溢出标志,溢出时,即定时器/计数器内部数据超出最大值,由硬件使TF0置1,发中断请求,响应后TF0由硬件清0。TF1:T1溢出标志。TR0和TR1是控制定时器/计数器的启动和停止的,在定时器/计数器章节介绍。2、串行口控制寄存器SCONTI:串行口发送中断标志 在串行口以方式0发送时,每当发送完8位数据,由硬件使TI置1。若以方式1、2、3方式发送时,在发送停止位的开始时使TI置1。RI:串行口接收中断标志 以方式0工作,每
11、当接收到第8位,则使RI置1 以方式1、2、3工作,且SM2=0时,接受到停止位的中间时使RI置1 以方式2、3工作,且SM2=1时,仅当接收到第9位数据RB8为1,且同时还要接收到停止位的中间时才使RI置1。3、中断允许寄存器 IEIEAFHACH ABHAAHA9HA8HA8HEA/ESET1TX1ET0EX0IEIE寄存器位定义表寄存器位定义表 低低高高EAEA:CPUCPU中断开放标志中断开放标志EA=1EA=1,CPUCPU开放中断,开放中断,EA=0EA=0,CPUCPU禁止禁止所有所有中断;中断;ESES:串行口中断允许位:串行口中断允许位ES=1,ES=1,允许串行口中断,允许
12、串行口中断,ES=0ES=0,禁止,禁止串行口串行口中断;中断;ET1ET1:T1T1溢出中断允许位溢出中断允许位ET1=1,ET1=1,允许允许T1T1溢出中断,溢出中断,ET1=0ET1=0,禁止,禁止T1T1溢出溢出中断;中断;EX1EX1:外部中断:外部中断1 1中断允许位中断允许位 EX1=1,EX1=1,允许允许外部中断外部中断1 1中断,中断,EX1=0EX1=0,禁止外部,禁止外部中断中断1 1中断中断ET0ET0:T0T0溢出中断允许位溢出中断允许位ET0=1,ET0=1,允许允许T0T0溢出中断溢出中断,ET0=0ET0=0,禁止,禁止T1T1溢出中断;溢出中断;EX0EX
13、0:外部中断:外部中断0 0中断允许位中断允许位 EX0=1,EX0=1,允许允许外部中断外部中断0 0中断,中断,EX0=0EX0=0,禁止外部,禁止外部中断中断1 1中断。中断。4、中断优先级寄存器IPIPBCHBBHBAHB9HB8HB8H/PSPT1PX1PT0PX0IP寄存器位定义表PS:串行口中断优先级控制位 PS=1,串行口中断设置为高优先级中断 PS=0,串行口中断设置为低优先级中断;PT1:T1溢出中断优先级控制位 PT1=1,T1溢出中断设置为高优先级中断 PT1=0,T1溢出中断设置为低优先级中断;PX1:外部中断1中断优先级控制位 PX1=1,外部中断1中断设置为高级中
14、断 PX1=0,外部中断1中断设置为低级中断;PT0:T0溢出中断优先级控制位 PT0=1,T0溢出中断设置为高优先级中断 PT0=0,T0溢出中断设置为低优先级中断;PX0:外部中断0中断优先级控制位 PX0=1,外部中断0中断设置为高级中断 PX0=0,外部中断0中断设置为低级中断5.2.3硬件查询顺序中断源中断优先级别外部中断0最高T0溢出中断外部中断1T1溢出中断串行口中断最低 若同时收到几个同一优先级的中断请求时,哪一个先得到服务,这取决于中断内部的硬件查询顺序。中断优先级顺序表5.2.4 51单片机中断响应条件及响应 过程每个机器周期,单片机对所有中断源都进行顺序检测,并可在任意一
15、个周期的S6期间,找到所有有效的中断请求,并对其优先级排队,只要满足下列具体条件:无同级或高级中断正在服务现行的指令执行到最后一个机器周期且已结束;若现行指令为RETI或需访问特殊功能寄存器IE或IP指令时,执行完该指令且紧随其后的另一条指令也已执行完则单片机便在紧接着的下一个机器周期S1期间响应中断,否则将丢弃中断查询的结果。若满足上述条件,则CPU 就会在下一个机器周期响应中断。2、响应过程在CPU响应中断之后,会进入相应的中断服务程序来完成设定的中断功能,具体响应过程如下:首先置位响应的优先级有效触发器;CPU根据查到的中断源,通过硬件自动生成调用指令(LCALL),并转到相应的中断矢量
16、单元(一组存放中断服务子程序入口地址的单元),进入中断服务子程序,且通过堆栈保护断点;对响应的中断入口地址值装入程序计数器PC,使程序转向该中断入口地址,以执行中断服务程序,直到遇见中断返回指令RETI。RETI必须安排在中断服务程序的最后,用于返回断点,且开放中断逻辑。至此,中断响应全部完成。3、中断处理过程中应注意的问题1)中断申请的撤销2)数据保护3)中断响应时间4、外部中断源的扩展MCS-51单片机只提供两个外部中断源INT0和INT1,若服务于多个外设,这显然不够。可采用一些方法进行扩展。借用定时器扩展外部中断源定时器/计数器T0 和T1 是两个内部中断源,若不作为定时器和计数器使用
17、,可将其扩展为外部中断源。方法是:将T0 或T1 设置成计数器工作方式,初值最大(FFFFH),来一个脉冲,加1即产生溢出中断。中断和查询结合的方法若系统有多个中断请求源,再用定时器T0或T1就不够使用,可采用中断和查询结合的方法扩展中断源。在外部中断1引脚上连接4个外设的中断源,通过OC门产生中断请求信号INT1。第三节 中断系统应用程序 例5-2现在规定外部中断0(INT0)为电平触发方式,高优先级,试写出有关的初始化程序。几个特殊功能寄存器有关控制位的赋值一般都包含在主程序中,而中断服务程序是一种具有特定功能的独立程序段,应根据中断源的具体要求进行编写。初始化程序如下:SETB EA ;
18、开中断SETB EX0 ;允许INT0中断SETB PX0 ;将INT0设置为高优先级CLR IT0 ;设置为电平触发方式例5-3规定外部中断1(INT1)为边沿触发方式,低优先级。在中断服务程序中将寄存器B的内容右循环移一位,B 的初值为10H。试编写主程序和中断服务子程序。ORG 0000H ;主程序 LJMP MAIN ;主程序转至MAIN ORG 0013H ;中断服务子程序 LJMP INT ;转至INTMAIN:SETB EA ;中断总允许 SETB EX1 ;中断源允许 CLR PX1 ;设置为低优先级 SETB IT1 ;边沿触发 MOV B,#10HLOOP:SJMP LOO
19、P INT:MOV A,B RR A ;循环右移一位 MOV B,A RETI ;中断返回 END第四节 Proteus电路仿真软件介绍5.4.1简介Proteus开发平台是英国Labcenter公司开发的用于嵌入式仿真开发应用平台,是目前世界上最先进完整的嵌入式系统设计与仿真平台。利用Proteus和Keil软件联机使用可以实现数字电路、模拟电路及微处理器系统的电路仿真、软件方针和PCB设计等功能。其软件主要包含两部分:Proteus ISIS和ARES。其中ISIS用于电路原理图的设计及交互式仿真,ARES主要用于印制电路板的设计,产生最终的PCB文件。在Proteus软件中提供了大量电子
20、元器件的器件库,虚拟仪器,总线调制器等EDA工具。其可支持多种主流单片机系统的仿真,如68000系列、51系列、AVR系列、PIC系列、Z80系列、HC11系列等,是一款非常强大的EDA仿真软件。5.4.2ISIS软件编辑环境简介ISIS软件是主要进行电路原理图设计,其主要有如下区域:标题栏、菜单栏、工具栏(命令工具栏和选择工具栏)、方位控制按钮、仿真控制按钮、状态栏、预览窗口、对象选择窗口、编译窗口.标标题题栏栏菜菜单单栏栏命命令令工工具具栏栏状状态态栏栏仿仿真真控控制制按按钮钮方方位位控控制制按按钮钮选选择择工工具具栏栏预预览览窗窗口口对对象象选选择择窗窗口口编编译译窗窗口口图5-4 Pr
21、oteus编译界面图3、命令工具栏命令工具栏主要分四部分,分别是文件工具、浏览工具、编辑工具、设计工具,文件工具可完成“File”菜单中的指令操作,浏览工具可完成“View”菜单中的指令操作,编辑工具可完成“Edit”和“Library”菜单中的部分命令操作,设计工具可完成”Tools”和“Design”菜单中的部分命令操作。4、选择工具栏选择工具栏中主要分三部分,分别是模型工具、配件工具、2D图形工具。(1)模型工具中:单击元器件并编辑选中的元器件的参数。:选择元器件。:设置连接点。:设置连线标签。:输入编辑已有文本。:绘制总线。:绘制子电路框图或子电路元器件。(2)配件工具:列出可供选择的
22、各种终端(如电源、地等)。:用于绘制各种引脚。:列出可供选择的各种仿真分析所需图表。:分割仿真时采用此模式,记录前一步仿真输出,并作为后一步的仿真输入。:列出可供选择的模拟和数字激励源(正弦、脉冲、指数等激励)。:电压指针,记录探针处的电压值,可记录模拟电压值或数字电压的逻辑值。:电流指针,记录探针处的电流值,只能记录模拟电路的电流值。:列出可选的虚拟仪器(如示波器、逻辑分析仪、计数器/频率器等)。(3)2D图形工具:直线按钮,用于在电路图中画线或创建元器件。:方框按钮,用于在电路图中画方框或创建元器件。:圆按钮,用于在电路图中画圆或创建元器件。:弧线按钮,用于在电路图中画弧线或创建元器件。:
23、任意形状按钮,用于在电路图中画任意形状或创建元器件。:文本编辑按钮,用于在电路图中插入文字。:符号按钮,用于从符号库中选择符号元器件。:标记按钮,列出可供选择的各种标记类型,用于产生各种标记图标。5、方位控制按钮:顺时针旋转90度。:逆时针旋转90度。:输入旋转角度,只能是90度的整数倍。:水平翻转。:垂直翻转。6、仿真控制按钮用来控制仿真过程的运行、暂停、单步运行和停止的操作。7、状态栏反映仿真持续时间、是否出现错误等信息。8、预览窗口 在该窗口中可看到整体电路设计图或者元器件图,以及图形所在位置。9、对象选择窗口 该窗口配合选择工具栏使用,根据选择工具栏中不同的按钮会出现不同的选择对象。1
24、0、编译窗口 在该窗口中进行电路原理图的设计、元器件放置、观察仿真显示等。5.4.3电路原理图的建立建立一个Proteus电路原理图需要如下步骤:建立设计文件;选择放置元器件;布线;调整、修改;保存;仿真。1、建立设计文件如图5-6(a)点击“File”菜单中的“New Design”,出现图5-6(b),可供选择图纸样式,确定后可进行元器件的选择。图5-6(a)2、选择放置元器件点击选择工具栏中的 图标按钮后,再点击对象选择窗口中的 按钮,就会出现器件选择对话框,如图5-7。元器件制造商列表元器件制造商列表搜索关键词查找元器件搜索关键词查找元器件元元器器件件列列表表元元器器件件子子列列表表型
25、号型号类型类型特性特性元器件元器件图形符图形符号预览号预览元器件元器件PCBPCB封装预览封装预览3、布线、调整及保存、仿真当所有元器件都放置好之后,可通过连线将元器件之间进行连接,并且可通过“Tools”菜单下的自动布线功能使其自动布线,也可根据需要手动布线。经过检查调整电路,认为无误后,可通过仿真控制按钮观察仿真结果,进行验证。若想保存电路原理图,可通过“File”菜单下的保存功能将文件保存到所需位置。图5-9 例5-5的Proteus电路仿真图练习题 1简述中断、中断源、中断优先级及中断嵌套的含义。2说明MCS-51单片机的各中断源特点、优先级别和中断入口地址。3编写外部中断0电平触发方式的中断初始化程序。4利用门电路进行设计,实现中断扩展。5利用AT89C51单片机的外部中断0和外部中断1的中断方式,分别控制P1.0和P1.1上的两个LED灯的亮灭状态。画出电路图并编写程序。