资源预览内容
第1页 / 共115页
第2页 / 共115页
第3页 / 共115页
第4页 / 共115页
第5页 / 共115页
第6页 / 共115页
第7页 / 共115页
第8页 / 共115页
第9页 / 共115页
第10页 / 共115页
亲,该文档总共115页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
所谓所谓中断中断,是指,是指CPUCPU正在处理某些事务的时候,外正在处理某些事务的时候,外部又发生了某一事件,请求部又发生了某一事件,请求CPUCPU及时处理。于是,及时处理。于是,CPUCPU暂时中断当前的工作,转而处理所发生的事件暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。的工作。这样的过程,称为中断。能够实现中断处理功能的部件称为中断系统 ;产生中断的请求源称为中断请求源。中断源向CPU提出的处理请求,称为中断请求 (或中断申请)。进入中断保护现场中断处理恢复现场 中断返回中断方式优点:大大地提高了CPU的工作效率。中断与子程序的最主要区别:子程序是预先安排好的;中断是随机发生的;中断系统结构定时器/计数器控制寄存器TCONIE0IE0:为外部中断为外部中断INT0INT0的的请求标志请求标志位。当位。当INT0INT0引脚引脚 上出现中断请求信号(低电平或脉冲下降沿)时,硬上出现中断请求信号(低电平或脉冲下降沿)时,硬 件自动将件自动将IE0IE0置置“1”“1”,产生中断请求标志。系统响应外,产生中断请求标志。系统响应外 部中断部中断INT0INT0后,后,IE0IE0由硬件清零(边沿触发)。由硬件清零(边沿触发)。IT0IT0:外部中断外部中断INT0INT0触发方式控制位。由软件来置触发方式控制位。由软件来置 “1”“1”或清或清“0”“0”,以控制外部中断,以控制外部中断INT0INT0的触发方式。的触发方式。当当IT0=1IT0=1 时,外部中断时,外部中断INT0INT0为为下降沿触发下降沿触发。当当IT0=0IT0=0时,外部中断时,外部中断INT0INT0为为电平触发电平触发。l lIE1IE1:为外部中断为外部中断INT1INT1的请求标志位。功能与的请求标志位。功能与IE0IE0相同相同 。l lIT1IT1:外部中断外部中断INT1INT1触发方式控制位。功能与触发方式控制位。功能与IT0IT0相同。相同。l lTF0TF0:定时器定时器T0T0的溢出中断标志位,当计数器的溢出中断标志位,当计数器0 0计满溢计满溢出时,出时,TF0TF0置置“1”“1”。l lTF1TF1:定时器定时器T1T1的溢出中断标志位。的溢出中断标志位。串行口控制寄存器SCONTITI:串行口内部发送中断请求标志位。串行口内部发送中断请求标志位。当串行口发送完当串行口发送完一个字符一个字符(8(8位位) )后,由内部硬件使发后,由内部硬件使发 送中断标志送中断标志TITI置置1 1。产生中断请求标志。产生中断请求标志。RIRI:串行口内部接收中断请求标志位。串行口内部接收中断请求标志位。当串行口接收到一个字符后,由内部硬件使接收中断当串行口接收到一个字符后,由内部硬件使接收中断 请求标志位请求标志位RIRI置置1 1。产生中断请求标志。产生中断请求标志。l l串行口的发送中断串行口的发送中断TITI,和接收中断和接收中断RIRI,共用一个共用一个内部中断源。它们逻辑内部中断源。它们逻辑“ “或或” ”后,作为一个内部的后,作为一个内部的串行口中断源。串行口中断源。l lCPUCPU响应串行口的中断后,并不对响应串行口的中断后,并不对TITI或或RIRI清清0 0, TITI或或RIRI必须由软件来清必须由软件来清0 0。中断允许寄存器IEl lEAEA:中断总允许位。中断总允许位。EA=1EA=1,CPUCPU开放中断;开放中断;EA=0EA=0, CPUCPU禁止所有的中断请求。禁止所有的中断请求。l lESES:串行中断允许位。串行中断允许位。l lET1ET1:T1T1溢出中断允许位。溢出中断允许位。l lEX1EX1:外部中断外部中断1 1允许位。允许位。l lET0ET0:T0T0溢出中断允许位。溢出中断允许位。l lEX0EX0:外部中断外部中断0 0允许位。允许位。l l1 1,允许中断;允许中断;0 0,禁止中断。禁止中断。l lMCS-51MCS-51单片机复位后,单片机复位后,IEIE中各个位均清零,即禁止所中各个位均清零,即禁止所 有中断。有中断。例 若允许片内2个定时器/计数器中断,禁止其它中 断源的中断请求。编写设置IE的相应程序段(1)用位操作指令来编写如下程序段:CLR ES ;禁止串行口中断 CLR EX1 ;禁止外部中断1中断CLR EX0 ;禁止外部中断0中断SETB ET0 ;允许定时器/计数器T0中断SETB ET1 ;允许定时器/计数器T1中断SETB EA ;CPU开中断 (2)用字节操作指令来编写:MOV IE,#8AH 或者用:MOV 0A8H,#8AH ;A8H为IE寄存器字节地址中断优先级寄存器IPl lPSPS:串行口中断优先级控制位。串行口中断优先级控制位。l lPT1PT1:T1T1中断优先级控制位。中断优先级控制位。l lPX1PX1:外部中断外部中断1 1优先级控制位。优先级控制位。l lPT0PT0:T0T0中断优先级控制位。中断优先级控制位。l lPX0 PX0 :外部中断外部中断0 0优先级控制位。优先级控制位。l l1 1,设定为高优先级中断;设定为高优先级中断;0 0,设定为低优先级中断设定为低优先级中断 。l lMCS-51MCS-51单片机复位后,单片机复位后,IPIP寄存器低寄存器低5 5位全部被清位全部被清0 0,将所有中断源设置为低优先级中断。,将所有中断源设置为低优先级中断。例 设置IP寄存器的初始值,使2个外中断请求 为高优先级,其它中断请求为低优先级。(1)用位操作指令SETB PX0 ;2个外中断为高优先级SETB PX1 CLR PS ;串口为低优先级中断CLR PT0 ;2个定时器/计数器低优先级中断 CLR PT1 (2)用字节操作指令MOV IP,#05H 或:MOV 0B8H,#05H ;B8H为IP寄存器的字节地 址中断的响应时间单级中断中最短的响应时间为3个机器周期:(1)中断请求标志位查询占1个机器周期。(2)子程序调用指令LCALL转到相应的中断服务程 序入口,需2个机器周期。 外部中断响应的最长的响应时间为8个机器周期:(1)发生在CPU进行中断标志查询时,刚好是开始 执行RETI或是访问IE或IP的指令,则需把当前指令执 行完再继续执行一条指令后,才能响应中断,最长需 2个机器周期。(2)接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。(3)加上硬件子程序调用指令LCALL的执行,需要2 个机器周期。所以,外部中断响应最长时间为8个机器周期。 如果已在处理同级或更高级中断,响应时间无法计算。在一个单一中断的系统里,MCS-51单片机对中断请求的响应的时间总是在38个机器周期之间。(1)跳沿方式外部中断请求的撤消是自动撤消的 。 (2)电平方式外部中断请求的撤消:除了标志位清“0”之外,还需在中断响应后把 中断请求信号引脚从低电平强制改变为高电平,只要P1.0端输出一个负脉冲就可以使D触发器置“1”,从而撤消了低电平的中断请求信号。所需的负脉冲可增加如下两条指令得到:ORL P1,#01H ;P1.0为“1”ANL P1,#0FEH;P1.0为“0” 电平方式的外部中断请求信号的完全撤消,是通过软硬件相结合的方法来实现的。串行口中断请求的撤消响应串行口的中断后,CPU无法知道是接收中断 还是发送中断,还需测试这两个中断标志位的状态, 以判定是接收操作还是发送操作,然后才能清除。所 以串行口中断请求的撤消只能用软件清除CLR TI ;清TI标志位 CLR RI ;清RI标志位中断服务程序的设计一、中断服务程序设计的任务 基本任务:(1)设置中断允许控制寄存器IE。(2)设置中断优先级寄存器IP。(3)对外中断源,是采用电平触发还是跳沿触发 。(4)编写中断服务程序,处理中断请求。(保护现场、中断处理、恢复现场和RETI结束 )前3条一般放在主程序的初始化程序段中。例 假设允许外部中断0中断,并设定它为高级 中断,其它中断源为低级中断,采用跳沿触发方 式。在主程序中编写如下程序段:SETB EA ;CPU开中断SETB ET0 ;允许外中断0产生中断SETB PX0 ;外中断0为高级中断SETB IT0 ;外中断0为跳沿触发方式 二、采用中断时的主程序结构 常用的主程序结构如下:ORG 0000H LJMP MAIN ORG 中断入口地址 LJMP INT ORG XXXXH MAIN:主 程 序INT:中断服务程序三、中断服务程序的流程 例 根据中断服务程序流程,编出中断服务程序。 假设,现场保护只需将PSW和A的内容压入堆栈中保护 。 典型的中断服务程序如下:INT:CLR EA;CPU关中断 PUSH PSW;现场保护 PUSH ACC; SETB EA;CPU开中断中断处理程序段CLR EA;CPU关中断 POP ACC;现场恢复 POP PSW SETB EA;CPU开中断RETI;中断返回,恢复断点几点说明:1、现场保护仅涉及到PSW和A的内容,如还有其它需保 护的内容,只需要在相应的位置再加几条PUSH和POP指令 即可。 2、“中断处理程序段”,应根据任务的具体要求,来 编写。 3、如果本中断服务程序不允许被其它的中断所中断。 可将“中断处理程序段”前后的“SETB EA”和“CLR EA”两条指令去掉。 4、中断服务程序的最后一条指令必须是返回指令RETI 。单步工作方式:按一次键执行 一条主程序的指 令。1、建立单步执行 的外部控制电路 。ORG0000HSJMPSTARTORG0003H ;中断程序JNBP3.2,$;=0则“原地踏步”JBP3.2,$ ;=1则“原地踏步”RETI START:MOVIE,#81H ;主程序MOVTCON,#00H LOOP: INCAMOVP1,ASJMPLOOPEND2、编写外部中断的中断服务程序:多中断源系统当外部中断源多于中断输入引脚时,可采取以下措施: 1.用定时器计数输入信号端T0、T1作外部中断入口引脚 2.用一个中断入口接受多个外部中断源,并加入中断查询电路 。AJMP EXIT要求每次按动按键,使外接发光二极管LED改变一次亮灭状态 。 解:INT0输入按键信号,P1.0输出改变LED状态。 1跳变触发:每次跳变引起一次中断请求。ORG 0000HAJMP MAIN ORG0003H ;中断入口 AJMPPINT0 ORG0100H ;主程序 MAIN:MOV SP,#40H ;设栈底SETBEA;开总允许 开关 SETBEX0;开INT0中 断 SETBIT0;负跳变触 发中断 Here:SJMPHere ;相当于执 行其它 任务 ORG0200H ;中断服务 程序 PINT0:CPL P1.0;改变LED RETI;返回主程 序单片机INT0P1.01+5V1软件等待按键释放。 2硬件清除中断信号。2. 电平触发:避免一次按键引起多次中断响应。单片机INT0P1.01+5VORG 0000H;AJMP MAIN ORG0003H ;中断入口 AJMPPINT0 ORG0100H ;主程序 MAIN:MOV SP,#40H ;设栈底SETBEA;开总允许开 关 SETBEX0;开INT0中断 CLRIT0;低电平触发 中断 Here:SJMPHere ;相
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号