资源描述
2020/4/30,主要内容,中断系统,外部中断应用举例,2020/4/30,中断系统概述,与上对比,单片机中也有同样的问题。CPU正在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫。,某同学正在教室写作业,忽然被人叫出去,回来后,继续写作业。这就是生活中中断的例子。,2020/4/30,对突发事故,做出紧急处理。根据现场随时变化的各种参数、信息,做出实时监控。CPU与外部设备并行工作,以中断方式相联系,提高工作效率。解决快速CPU与慢速外设之间的矛盾。在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。,中断的作用,2020/4/30,“五源中断,两级管理”,五个中断源:入口地址外部中断0(/INT0)0003HT0溢出中断000BH外部中断1(/INT1)0013HT1溢出中断001BH串口中断0023H,“五源中断”,2020/4/30,中断源的中断请求,如何通知CPU?利用中断请求标志位来通知!,标志位在TCON、SCON两个寄存器中,2020/4/30,TCON,中断标志位,2020/4/30,SCON,中断标志位,2020/4/30,在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。,IE,若为“1”,开关接通,允许例如SETBEA若为“0”,开关断开,不允许例如CLRIE.7,两级管理中断屏蔽,2020/4/30,为什么要有中断优先级?,PS串口的中断优先级别PT1定时/计数器T1的中断优先级别PX1外部中断1的中断优先级别PT0定时/计数器T0的中断优先级别PX0外部中断0的中断优先级别,该位是“1”时,为高级优先级该位是“0”时,为低级优先级,两级管理中断优先级,2020/4/30,同一级中的5个中断源的优先顺序是:,中断优先原则:(概括为四句话)1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级、同时中断,事先约定。,2020/4/30,2020/4/30,响应条件-CPU要响应中断需满足下列条件:无同级或高级中断正在服务;当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。,MCS-51中断的响应过程,2020/4/30,响应过程-单片机响应中断后,自动执行下列操作:置位中断优先级有效触发器,即关闭同级和低级中断:调用入口地址,断点入栈,相当于LCALL指令;进入中断服务程序。,2020/4/30,响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL),2020/4/30,(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,2020/4/30,中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。,2020/4/30,CPU响应中断后,应撤除该中断请求标志,否则会再次中断。对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。,MCS-51中断请求的撤销,2020/4/30,对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。对电平触发的外部中断,CPU在响应中断时也不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。,MCS-51中断请求的撤销,2020/4/30,主要内容,中断系统,外部中断应用举例,2020/4/30,2020/4/30,注意,用户对中断的控制和管理,实际是对4个与中断有关的寄存器IE、TCON、IP、SCON进行设置。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关位进行预置。,2020/4/30,注意,开中断总控开关EA,置位中断源的中断允许位。,INT0、INT1应选择中断触发方式。,多个中断源中断,应设定中断优先级,预置IP。,编写中断服务程序,保护现场和恢复现场。,若要在执行当前中断程序时禁止更高优先级中断,可以采用软件关CPU中断或禁止某中断源中断,在中断返回前再开放中断。,2020/4/30,外部中断应用举例,89C51的P1口接一个数码管,利用开关产生外部中断0请求信号,用数码管显示中断的次数。,2020/4/30,程序设计,ORG0000HLJMPMAINORG0003HLJMPINIT0ORG0040HMAIN:SETBIT0SETBEX0SETBEAMOVP2,#0FFHMOVR0,#00HMOVDPTR,#LEDLOOP:CJNER0,#09H,RE,MOVR0,#00HRE:AJMPLOOPINIT0:INCR0MOVA,R0MOVCA,A+DPTRMOVP2,ARETILED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0D8H,90H,88HEND,
展开阅读全文