您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 07MSC-51单片机的中断系统
第07讲51单片机的中断系统电气信息实验教学中心仝迪一、中断的基本概念所谓中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理时往往用到中断系统,计算机与外部设备间传送数据及实现人机联系也常常采用中断方式。一、中断的基本概念•中断系统需要解决以下基本问题:•(1)中断源:中断请求信号的来源。•包括中断请求信号的产生及该信号怎样被CPU有效地识别。而且要求中断请求信号产生一次,只能被CPU接收处理一次,即不能一次中断申请被CPU多次响应。这就涉及到中断请求信号的及时撤除问题。•(2)中断响应与返回:•CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地执行。中断响应与返回的过程中涉及到CPU响应中断的条件、现场保护等问题。一、中断的基本概念•(3)优先级控制:•一个计算机应用系统,特别是计算机实时测控应用系统,往往有多个中断源,各中断源所要求的处理具有不同的轻重、缓急程度。与人处理问题的思路一样,希望重要紧急的事件先处理,而且如果当前处于正在处理某个事件的过程中,有更重要、更紧急的事件到来,就应当暂停当前事件的处理,转去处理新事件。这就是中断系统优先级控制所要解决的问题。中断优先级的控制形成了中断嵌套。一、中断的基本概念•MCS51中断系统一、中断的基本概念•中断的响应过程•(1)在每条指令结束后,系统都自动检测中断请求信号,如果有中断请求,且CPU处于开中断状态下,则响应中断。•(2)保护现场,在保护现场前,一般要关中断,以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。•(3)中断服务,即为相应的中断源服务。•(4)恢复现场,用堆栈指令将保护在堆栈中的数据弹出来,在恢复现场前要关中断,以防止现场被破坏。在恢复现场后应及时开中断。•(5)返回,此时CPU将推入到堆栈的断点地址弹回到程序计数器,从而使CPU继续执行刚才被中断的程序。二、中断源•MCS51单片机的中断源二、中断源(外部中断)•1.外部中断•外部中断是指从单片机外部引脚INT0、INT1输入中断请求信号的中断,即外部中断源有两个。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源。•外部中断请求INT0、INT1有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。下面再给出TCON的位定义格式,并对与中断有关的定义位予以说明。二、中断源(外部中断)•IT0(IT1):外部中断0(或1)触发方式控制位。•IT0(或IT1)被设置为0,则选择外部中断为电平触发方式;IT0(或IT1)被设置为1,则选择外部中断为跳变触发方式。TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON字节地址98H二、中断源(外部中断)•IE0(IE1):外部中断0(或1)的中断请求标志位。•当IE0(IE1)=1时说明外部触发条件成立•当Itx=0时,外触发工作于“电平触发”模式,当单片机对应引脚上出现低电平时,系统将被触发。•当Itx=1时,外触发工作于“边缘触发”模式,当单片机对应引脚上出现由“高”到“低”的一次跳变时,系统将被触发。TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON字节地址98H二、中断源(内部中断)•内部中断是单片机芯片内部产生的中断。•MCS-51单片机(51子系列)的内部中断有定时器/计数器T0、T1的溢出中断,串行口的发送/接收中断。•前已述及,当定时器/计数器T0、T1的定时或计数到由硬件自动置位TCON的TF0或TF1,便向CPU申请中断。三、中断的控制•1、中断允许控制:•MCS-51单片机中没有专设的开中断和关中断指令,对各中断源的中断开放或关闭是由内部的中断允许寄存器IE的各位来控制的。IE各位的定义如下:EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。EA的作用是使中断允许形成两级控制。即各中断源首先受EA位的控制;其次还要受各中断源自己的中断允许总控位控制。•EA=1;//总中断启动•EA=0;//总中断关闭EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•ET2:定时器/计数器T2的溢出中断允许位,只用于52子系列,51子系列无此位。ET2=0,禁止T2中断;ET2=1,允许T2中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1允许串行口中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•ET1:定时器/计数器T1的溢出中断允许位。ET1=0,禁止T1中断;ET1=1,允许T1中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•EX1:外部中断1(INT1)的中断允许位。EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•EX0:外部中断0(INT0)的中断允许位。EX0=0,禁止外部中断0中断;EX0=1允许外部中断0中断。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H三、中断的控制•2、中断优先级控制•在单片机系统程序的设计中,往往使用不止一个中断服务子程序。于是就涉及到这样一些问题:•如果有多个满足条件的中断发生,那么哪一个中断服务子程序将被首先触发?•当一个中断服务子程序正在被执行的时候,又有中断发生了,正在被执行的中断服务子程序又该怎样运行?三、中断的控制•MCS-51单片机的中断源有两个用户可控的中断优先级,从而可实现二级中断嵌套。中断系统遵循如下三条规则:•(1)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。•(2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。•(3)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。三、中断的控制中断优先级控制寄存器PT2:定时器/计数器T2的中断优先级控制位,只用于具有Timer2的子系列。PS:串行口的中断优先级控制位。PT1:定时器/计数器T1的中断优先级控制位。PX1:外部中断INT1的中断优先级控制位。PT0:定时器/计数器T0的中断优先级控制位。PX0:外部中断INT0的中断优先级控制位。PT2PSPT1PX1PT0PX0IP三、中断的控制•默认的中断优先级中断源同级的中断优先级外部中断0定时器/计数器0中断外部中断1定时器/计数器1中断串行口中断定时器/计数器2中断最高最低三、中断的控制11IE0IE0≥1查询顺序识别查询顺序识别≥1≥1≥1中断入口地址中断入口地址低级中断请求高级中断请求查询硬件IPPX0PT0PX1PT1PSPT2ET2ESET1EX1ET0EX0IEINT0TF0INT1TF1TIRITF2EXF2三、中断响应的条件、过程与时间1、中断响应的条件相关中断源的使能被启用。总中断IE被使能。满足各中断的物理事件发生。单片机处于能够响应中断的状态:(1)无同级或高级中断正在处理。(2)现行指令执行到最后1个机器周期且已结束。(3)若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。三、中断的控制•2、中断响应过程•CPU响应中断后,由硬件自动执行如下的功能操作:•(1)根据中断请求源的优先级高低,对相应的优先级状态触发器置1。•(2)保护断点,即把程序计数器PC的内容压入堆栈保存。•(3)清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。•(4)把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。三、中断的控制•3、中断响应时间•所谓中断响应时间是指CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。了解中断响应时间对设计实时测控应用系统有重要指导意义。•MCS-51单片机响应中断的最短时间为3个机器周期。若CPU检测到中断请求信号时间正好是一条指令的最后一个机器周期,则不需等待就可以立即响应。所谓响应中断就是由内部硬件执行一条长调用指令,需要2个机器周期,加上检测需要1个机器周期,一共需要3个机器周期才开始执行中断服务程序。四、中断的使用•中断的使用一般需要考虑以下几个步骤:•1、使用哪些中断源•2、这些中断源的中断触发方式•3、中断源的优先级•4、使能中断源•5、使能全局中断四、中断的使用•当中断发生后,中断服务子程序需要做的工作•1、清中断标志位•2、禁止全局中断(如果需要)•3、禁止本中断源的中断使能•4、运行自定的中断服务子程序•5、重新启用本中断源的中断使能•6、启用全局中断,如果有四、中断的使用•例1,利用中断的方法,让LED灯熄灭•分析:•sbitled=P1^4;•sbitK1=P3^2;•voidmain(void)•{•IE0=0;//clearint0interruptflag•IT0=1;//fallingedgetriggerinterrupt•EX0=1;//int0interruptenable•EA=1;//systeminterruptenable•led=0;//ledon•while(1);•}四、中断的使用•voidEXT0_int()interrupt0•{•IE0=0;//clearint0interruptflag•EX0=0;//int0interruptdisable•led=1;//ledoff•EX0=1;//int0interruptenable•}四、中断的使用•在定时器一节的学习中,我们了解到,当定时器溢出后会产生一个“溢出”标志,这个“溢出”标志其实就是timer的中断标志位TF0/TF1四、中断的使用•例2:利用定时器中断的方法让LED等按特定节律闪烁。•voidtimer0_int()interrupt1•{•TF0=0;//cleartimer0intflag•ET0=0;//timer0intdisable•temp++;•if(temp==0xff)•{•led=~led;•temp=0;•}•ET0=1;//timer0intenable•}四、中断的使用•课后练习:•利用定时器中断的方法使LED指示灯由节律地闪烁•或者实现七段数码管的自动计数(类似于电子秒表的功能)
本文标题:07MSC-51单片机的中断系统
链接地址:https://www.777doc.com/doc-3711605 .html