51单片机的中断系统解析.ppt

上传人:得****1 文档编号:79176965 上传时间:2023-03-20 格式:PPT 页数:54 大小:210.50KB
返回 下载 相关 举报
51单片机的中断系统解析.ppt_第1页
第1页 / 共54页
51单片机的中断系统解析.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《51单片机的中断系统解析.ppt》由会员分享,可在线阅读,更多相关《51单片机的中断系统解析.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 项目项目4 4 单片机的中断系统单片机的中断系统嵌入式单片机方向单片机C语言程序项目设计4.1 4.1 任务说明任务说明 本节为理论内容,重点掌握单片机的中断类型、控制方式以及应用,单片机共有5个中断源,两级优先级控制,在以后的项目实践中,我们要用到定时器中断、外部中断和串行中断。4.2 4.2 中断系统的结构中断系统的结构 51单片机中断系统的结构如图4-1所示,5个中断分别有5个中断源,并提供两个中断优先级控制,能够实现两级中断服务程序的嵌套。单片机的中断系统是通过4个相关的特殊功能寄存器TCON、SCON、IE和IP来进行管理的。因此用户可以用软件对每个中断的开和关以及优先级的控制。定

2、时器控制寄存器TCON用于设定外部中断的中断。串口控制寄存器SCON用于保存串行口(SIO)的发送中断标志和接收中断标志。中断控制寄存器IE用于设定各个中断源的开放或关闭。各个中断源的优先级可以由中断优先级寄存器IP中的相应位来确定,同一优先级中的各中断源同时请求中断时,由中断系统的内部查询逻辑来确定响应的顺序。图图4-1 80514-1 8051单片机中断系统的结构单片机中断系统的结构一、中断源一、中断源 单片机5个中断源都有自己的标志位,包括外部中断(P3.1)引脚接受的外部中断请求;外部中断(P3.2)引脚接受的外部中断请求;定时器/计数器0(T0)溢出中断请求;定时器/计数器1(T0)

3、溢出中断请求;串行口完成一帧数据发送或接收中断请求源TI或RI。其中INT0和INT1一般称为外部中断,T0、T1和串行口(SIO 的TI和RI)则称为内部中断。在有中断请求时,由相应的中断标志位。保存其中断请求信号,分别存放在特殊功能寄存器TCON和SCON中增强型的51单片机,则比51单片机多一个中断源T2。二、中断优先级二、中断优先级 51单片机的中断系统具有两级优先级控制,系统在处理时遵循下列基本原则:1)低优先级的中断源可被高优先级的中断源中断,号的有效形式及保存定时/计数器T0和T1的中断请求标志位。而高优先级中断源不能被低级的中断源所中断;2)一种中断源(无论是高优先级或低优先级

4、)一旦得到响应,就不会被同级的中断源所中断;3)低优先级的中断源和高优先级的中断源同时产生中断请求时,系统先响应高优先级的中断请求,后响应低优先级的中断请求;表表4-1 中断入口地址及优先级排列表中断入口地址及优先级排列表中断源入口地址 中断级别 外部中断0 0003H最高最低 T0溢出中断 000BH外部中断1 0013H T1溢出中断 001BH 串行口中断 0023H 4)多个同级的中断源同时产生中断请求时,系统按照默认的顺序先后予以响应,5个中断默认优先级见表4-1。三、中断系统使用的多功能寄存器三、中断系统使用的多功能寄存器 要使用8051单片机的中断功能,必须掌握4个相关的特殊功能

5、寄存器中特定位的意义及其使用方法。下面分别介绍4个特殊功能寄存器对中断的具体管理方法。(1)TCON 定时器控制寄存器TCON是定时器/计数器T0和T1的控制寄存器,也用来锁存T0和T1的溢出中断请求TCOND7D6D5D4D3D2D1D0位名称TF1TR1TF0TR0IE1IT1IE0IT0TF0、TF1标志及外部中断请求源标志IE0、IE1。TCON的字节地址88H,既支持字节操作,又支持位操作。位地址的范围是 IT0,外部中断0(INT0)触发方式控制位,用于设定INT0中断请求信号的有效方式。如果将IT0设定为1,则外部中断0为边沿(脉冲)触发方式,CPU在每个机器周期的S5P2采样I

6、NT0的输入信号(即单片机的P3.2脚)。如果在一个机器周期中采样到高电平,在下一个机器周期中采样到低电平,则硬件自动将IE0置为“1”,向CPU请求中断;如果IT0为0,则外部中断0为电平触发方式。此时系统如果检测到INT0直至该中断信号被检测到。同时在中断返回前必须变为电平,否则会再次产生中断。概括地说,IT01时INT0的中断请求信号是脉冲后沿(负脉冲)有效,P3.2从1变为0时系统认为INT0有中断请求;IT00时,INT0的中断请求信号是低电平有效,即P3.2保持为0时系统认为INT0有中断请求。IE0,外部中断0的中断请求标志位。如果IT0置1,则当P3.2上的电平由1变为0时,由

7、硬件置位IE0,向CPU申请中断。如果CPU响应该中断,在转向中断服务时,由硬件将IE0复位。可见,IT0用于设定INT0中断请求的信号形式。设定了IT0后,如果INT0产生了有效的中断请求信号(P3.2出现脉冲后沿或低电平),则由中断系统的硬件电路自动将IE0置位。单片机系统在工作过程的每一个机器周期的特定时刻(即S5P2),通过检测INT0的中断请求标志位IE0是1还是0来确定INT0是否有中断请求,而不是通过检测P3.2上的中断请求信号来确定INT0的中断请求。端输入低电平,则置位IE0。采用电平触发时,输入到INT0端的外部中断信号必须保持低电平,IT01时表示有中断请求,IT00时则

8、没有中断请求。下面INT1的情况类似,不再重复说明。IT1IT1,外部中断1(INT1)的触发方式控制位。其意义和IT0相同。IE1IE1,外部中断1的中断请求标志位。其意义和IE0相同。TF0TF0,定时器/计数器T0的溢出中断请求标志位。当T0开始计数后,从初值开始加1计数,在计满产生溢出时,由硬件使置位TF0,向CPU请求中断,CPU响应中断时,硬件自动将TF0清零。如果采用软件查询方式,则需要由软件将TF0清零。因此,系统是通过检查TF0的状态来确定T0是否有中断请求。TF01表示T0有中断请求,TF00时则没有。TF1,定时器/计数器T1的溢出中断请求标志位,其作用同TF0。TR0和

9、TR1分别是T0和T1的控制位,与中断无关。将在定时器/计数器应用内容中介绍。(2)SCON SCON为串行口控制寄存器,主要用于设置串行口的工作方式,同时也用于保存串行口的接收中断和发送中断标志。字节地址是98H,既支持字节操作,又支持位操作。位地址的范围是98H9FH。8位中只有最低的两位与中断有关,其格式如下:SCON D7D6D5 D4 D3 D2 D1 D0位地址 9FH9EH9DH9CH9BH9AH99H98H位名称 SM0SM1SM2RENTB8RB8TIRI RI,串行口的接收中断标志位。8051单片机的串行口共有4中工作方式。在串行口的方式0中,每当接收到第8位数据时,由硬件

10、置位RI;在其他工作方式中,若SM20,在接收到停止位的中间时置位RI;若SM21,仅当接收到的第9位数据RB8为1时,并且在接收到停止位的中间时置位RI,表示串行口已经完成一帧数据的接收,向CPU申请中断,准备接收下一帧数据。但当CPU转到串行口的中断服务程序时,不复位RI,必须由设计者在程序中用指令来清零RI。简单地说,串行口在接收完一帧数据时自动将RI置位,向CPU申请中断。TI,串行口的发送中断标志位。在方式0中,每当发送完8位数据时由硬件置位。在其他方式中,在发送到停止位开始时置位TI,表示串行口已经完成一帧数据的发送,向CPU申请中断,准备发送下一帧数据。要发送的数据一旦写入串行口

11、的数据缓冲器SBUF,单片机的硬件电路就立即启动发送器进行发送。CPU响应中断时并不清零TI,同样要在程序中用指令来清零。(3)中断屏蔽寄存器IE 8051单片机的CPU对中断源的开放或屏蔽(即闭),是由片内的中断允许寄存器IE(也称为中断控制寄存器或中断屏蔽寄存器)控制的。IE的字节地址是A8H,既支持字节操作,又支持位操作。位地址的范围是A8HAFH。8位中有6位与中断有关,剩下的两位没有定义。其格式如下:IED7D6D5D4D3D2D1D0位地址AFHAEHADHACHABHAAHA9HA8H位名称EAESET1EX1ET9EX0 EA,CPU的中断开放标志。EA0时,CPU屏蔽所有的中

12、断请求,此时即使有中断请求,系统也不会去响应;EA 1时,CPU开放中断,但每个中断源的中断请求是允许还是被禁止,还需由各自的控制位确定。ES,串行口的中断控制位。ES1,允许串行口中断;ES0,禁止串行口中断。ET1:定时器/计数器1的溢出中断控制位。ET11,T1的中断开放,ET10,T1的中断被关闭。EX1,外部中断1的中断控制位。EX11,允许外部中断1中断;EX10,禁止外部中断1的中断。ET0,定时器/计数器T0的溢出中断控制位。ET01时允许T0中断;ET00,禁止T0中断。EX0,外部中断0的中断控制位。EX01,允许外部中断0的中断;EX00,禁止外部0的中断。可见,EA0时

13、,所有的中断都被屏蔽,此时IE低5位的状态没有任何作用。EA1时,可以通过对IE设置来开放或关闭相应的中断,在图5-1中可以很直观地看出来。单片机复位后,IE寄存器被清零,所有的中断都被屏蔽。IE寄存器中各个位的状态支持位寻址,用户根据要求用指令SETB置位或CLR清零,而实现相应的中断源允许中断或禁止中断,当然也可以采用字节操作来实现。例如,若要求开放外部中断,关闭内部中断,则可以用两条置位指令将EA、EX0和EX1置位,ES、ET1和ET0保持为系统复位后的默认值0。如果使用字节操作方式,则一条MOV指令即能实现,即MOV IE,#1xx00101B。其中的两个x对应的是无关位,可以任意为

14、1或0。(4)中断优先级控制寄存器 8051单片机的中断系统有两个中断优先级。对于每一个中断请求源都可编程为高优先级中断或低优先级中断,实现两级中断嵌套。中断优先级是由片内的中断优先级寄存器IP控制的。IP的字节地址是IPD7D6D5D4D3D2D1D0位地址BFHBEHBDHBCHBBHBAHB9HB8H位名称PSPT1 PX1 PT0 PX0B8H,既支持字节操作,又支持位操作。位地址的范围是B8HBFH。8位中有5位与中断有关,剩下的3位没有定义。其格式如下:PS,串行口的中断优先级控制位。PS1时,串行口被定义为高优先级中断源;PS0时,串行口被定义为低优先级中断源。PT1,定时器/计

15、数器T1的中断优先级控制位。PT11,T1被定义为高优先级中断源;PT10,T1被定义为低优先级中断源。PX1,外部中断1(INT1)的优先级控制位。PX1,外部中断1被定义为高优先级中断源;PX00,外部中断1被定义为低优先级中断源。PT0,定时器/计数器T0的中断优先级控制位。其功能同PT1。PX0,外部中断0(INT0)的优先级控制位。其功能同PX1。中断优先级控制寄存器IP的各位都由用户置位或复位,可用位操作指令或字节操作指令更新IP的内容,以改变各中断源的中断优先级,单片机复位后IP全为0,各个中断源均为低优先级中断。4.3 4.3 中断响应过程中断响应过程 单片机的中断的处理过程可

16、分为中断响应、中断处理和中断返回3个阶段。下面介绍8051单片机的中断处理过程。一、中断的响应条件 在每个机器周期的S5P2时刻,单片机依次采样每一个中断标志位,而在下一个机器周期对采样到的中断进行查询。如果在前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。CPU响应中断应具备的条件是:首先有中断源发出中断请求;然后CPU中断允许位EA为“1”,即CPU开中断,并且申请中断的中断源,其相应的中断允许位为“1”,即允许相应的中断源中断。条件满足时,一般CPU会响应中断请求。CPU响应中断时,会根据中断源的类别,在硬

17、件的控制下,程序转向相应的中断服务程序入口单元,执行中断服务程序。二、中断的响应过程二、中断的响应过程51单片机的中断系统中分为两个中断优先级。每一中断请求源均可通过对IP寄存器的编程为高优先级中断或低优先级中断,并可实现多级中断嵌套。一个正在执行的低优先 应新的中断请求。为了实现上述功能,51单片机的中断系统中有两个不可寻址的优先级状态触发器。一个指出某高优先级的中断正在得到服务,所有后来的中断请求被阻级中断服务程序能被高优先级的中断请求所中断,但不能被另一个同级或低级的中断源所中断。因此,如果CPU正在执行高优先级的中断服务程序,则不能被任何中断源所中断,必须等到当前的中断服务程序执行结束

18、,遇到返回指令(RETI)返回主程序后,至少再执行一条指令才能响应新的中断请求。为了实现上述功能,51单片机的中断系统中有两个不可寻址的优先级状态触发器。一个指出某高优先级的中断正在得到服务,所有后来的中断请求被阻断;另一个触发器指出某低优先级的中断正在得到服务,所有同级的中断请求都被阻断,但不能阻断高优先级的中断请求。如果8051单片机满足中断响应的条件,并且不存在中断被屏蔽的情况,CPU就响应相应的中断请求。在实际的响应过程中,CPU首先置位被响应中断的优先级状态触发器,以屏蔽(即关闭)同级和低级的中断请求。然后,根据中断源的类别,在硬件的控制下,内部自动执行一条子程序调用指令,将程序转移

19、至相应的中断入口处,开始执行中断服务程序。在转入中断服务程序时,子程序调用指令自动把断点地址(即程序计数器PC的当前值)压入堆栈,但不会自动保存状态寄存器PSW等寄存器中的内容。当中断的各项条件满足要求时,CPU响应中断,停止现行程序,转向中断服务程序。整个响应过程中CPU应完成工作有:1)关中断。CPU响应中断时便向外设发出中断响应信号,同时自动地关中断,处理一个中断过程中不致又接收另一新的中断,以防止误响应。2)保护断点。为了保证CPU在执行完中断服务程序后,准确地返回断点,CPU将断点处的PC值推入堆栈保护。待中断服务程序执行完后,由返回指令RETI将其从堆栈中弹回PC,从而实现程序的返

20、回。3)执行中断服务程序。找出中断服务程序入口地址,转入执行中断服务程序。在中断服务程序中一般应完成如下任务:(1)保护现场。由于CPU响应中断是随机的,而CPU中各寄存器的内容和状态标志会因转至中断服务程序而受到破坏,所以要在中断服务程序的开始,把断点处有关的各个寄存器的内容和状态标志,用堆栈操作指令PUSH推入堆栈保护。(2)中断服务。中断源申请中断时应完成的任务。(3)恢复现场。在中断服务程序完成后,把保护在堆栈中的各寄存器内容和状态标志,用POP指令弹回CPU。(4)开中断。上面已谈到CPU在响应中断时自动关中断。为了使CPU能响应新的中断请求,在中断服务程序末尾应按排开中断指令。(5

21、)返回主程序。当中断服务程序执行完毕返回主程序时,必须将断点地址弹回PC,因此在中断服务程序的最后用一条RETI指令,使PC返回断点。因系统保留的各中断入口地址间空间太小,所以,通常在中断入口地址处安排一条相应的跳转指令,跳转至用户设计的中断服务程序入口。三、中断处理三、中断处理 CPU响应中断请求后,即转到中断服务程序的入口,执行中断服务程序。从中断服务程序的第一条指令开始到中断返回指令为止,这个过程称为中断处理或中断服务。不同的中断源所需服务的要求及内容各不相同,其处理过程也就有所区别,但在一般情况下,中断处理应包括两部分内容:一是保护现场,二是为中断源服务。现场通常有程序状态字PSW、工

22、作寄存器、累加器或其他的特殊功能寄存器等。如果在中断服务程序中要用这些寄存器,则应在进入中断服务之前用进栈指令将它们的内容压入堆栈中保护起来,这就叫做保护现场。同样,在完成中断服务,中断程序返回之前(执行返回指令RETI之前),应采用出栈指令恢复现场。中断服务是根据中断源的具体要求所编写的中断服务程序的运行和处理。用户在编写中断服务程序时应,一般应注意以下几个方面:(1)8051单片机为各中断源所保留的中断入口地址,只相隔8个单元,如此小的空间通常是容纳不下中断服务程序的,因而常常在中断入口地址单元处设置一条无条件转移指令,使中断服务能转至中断服务程序所存放的存储器的任何位置。(2)在运行当前

23、的中断服务程序时,如果想禁止更高优先级的中断源请求中断,可以用指令复位IE中的相关控制位来屏蔽更高优先级中断源的中断请求。在中断服务程序执行完返回之前,再用指令开放中断。(3)在中断服务程序中保护、恢复现场时,为避免现场信息受到破坏或造成混乱,一般情况下,应先关闭CPU的中断,使CPU暂不响应新的中断请求,以避免保护或恢复现场的过程受到干扰。这就要求在编写中断服务程序时,应注意在保护现场之前要关中断。在保护现场之后,若允许高优先级的中断源申请中断,则应开中断。同样在恢现场之前应关中断,恢复之后再开中断。四、中断返回四、中断返回 中断服务程序的最后一条指令是中断返回指令RETI。它的功能是将断点

24、地址从堆栈中弹出,送回程序计数PC中,使程序能返回到原来被中断的地方继续执行。8051单片机的RETI指令除了弹出断点之外,还通知中断系统已完成中断处理,并将优先级状态触发器清除(复位),使系统能响应新的中断请求。五、中断请求的撤消五、中断请求的撤消 CPU完成中断请求的处理以后,在中断返回之前,应将该中断请求撤消,否则会引起第二次响应中断。在51单片机中,各个中断源撤消中断请求的方法各不相同。(1)定时/计数器的溢出中断:CPU响应其中断请求后,由硬件自动清除相应的中断请求标志位,使中断请求自动撤消,因此不用采取其他措施。(2)外部中断请求:中断请求的撤消与触发方式控制位的设置有关。采用边沿

25、触发的外部中断,CPU在响应中断后,由硬件自动清除相应的标志位,使中断请求自动撤消;采用电平触发的外部中断源,应采用电路和程序相结合的方式,撤消外部中断源的中断请求信号。(3)串行口的中断请求:由于RI和TI都会引起串口的中断,CPU响应后,无法自动区分RI和TI引起的中断,硬件不能清除标志位,需采用软件方法在中断服务程序中清除相应的标志位,以撤消中断请求。当某一中断得到相应时,由硬件调用对应的中断服务程序,把程序计数器PC的值压入堆栈,同时把被响应的中断服务程序的入口地址(中断服务程序的起始地址)装入PC中。因为采用硬件调用,每一个中断源的中断入口地址都是固定的,同时要每个中断服务程序必须放

26、在对应的中断入口地址单元。在中断服务结束后,单片机把响应中断时所置位的优先级激活触发器清零,然后将从堆栈中弹出的断点地址送给PC,使CPU返回到原来被中断的程序。六、中断响应时间六、中断响应时间 CPU在对中断请求进行响应时,不同的情况下所需的响应时间也不一样。现以外部中断为例,说明中断响应的时间。外部中断INT0和INT1的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被查询。如果产生了一个中断请求,而且满足响应的条件,CPU响应中断,由硬件生成长调用指令转到相应的中断服务程序入口,这条指令是双机器周期指令。因此,从中断请求有效到执行中断服务程序的第一条指令的时间间隔至少需要3个完整的机器周期。如果中断请求被上述的3个条件之一所屏蔽,将需要更长的响应时间。(1)如果已经在处理同优先级或高优先级的中断,则额外的等待时间明显地取决于正在处理的中断服务程序的执行时间。(2)如果CPU正在执行的指令没有到最后的机器周期,则所需的额外等待时间不会多于3个机器周期,因为最长的指令(乘法指令和除法指令)也只有4个机器周期。(3)如果正在执行的指令为RETI或是对IE、IP的读写指令,则额外的等待时间不会多于5个机器周期。这样如果应用系统中只设定一个中断源,并且中断是开放的,则中断响应时间将是38个机器周期。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁