本章内容Ch5Interrupt5.1MCS-51中断系统5.2MCS-51中断系统的应用本章重点1、HowmanyinterruptsdoestheSingleChipMicrocomputerhave?Whattheyare?2、中断概念,响应条件,处理原则,中断服务5.1.1中断概念CPU正在执行主程序时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平的变化,一个脉冲沿的发生或内部计数器的计数溢出等)请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理程序处理完该事件后,再回到原来被中止的地方,继续原来的工作(例如,继续执行被中断的主程序),这称为中断。CPU处理事件的过程,称为CPU的中断响应过程5.1MCS-51中断系统日常生活中的中断与单片机中断的比较:日常事务程序中断服务程序某人看书执行主程序日常事务电话铃响中断信号如INT=0中断请求暂停看书暂停执行主程序中断响应书中作记号当前PC入栈保护断点电话谈话执行中断程序中断服务继续看书返回主程序中断返回5.1.1中断概念5.1MCS-51中断系统•对突发事故,做出紧急处理。•根据现场随时变化的各种参数、信息,做出实时监控。•CPU与外部设备并行工作,以中断方式相联系,提高工作效率。•解决快速CPU与慢速外设之间的矛盾。•在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。5.1.2中断的作用5.1MCS-51中断系统①中断源②中断申请③开放中断④保护现场⑤中断服务⑥恢复现场⑦中断返回(前面提到的电话)(电话发出信号提出申请)(乙方同意传送)(安排好当前的工作)(响应乙方的要求)(完事后,回去……)(继续做打断前的工作)5.1.3中断涉及的几个环节5.1MCS-51中断系统IE0TF0IE1TF1TIRIIFEX0ET0EX1ET1ES≥1PX0PT0PX1PT1PS高级低级内部查询内部查询入口地址入口地址INT0INT1T0T1TIRIIEIPEA中断源利用中断请求标志位来通知!!!5.1.3中断涉及的几个环节5.1MCS-51中断系统InterruptSourceServiceroutinestartingaddressExternal00003HTimer/Counter0000BHExternal10013HTimer/counter1001BHSerialport0023HIT0IE0IT1IE1TR0TF0TR1TF1TCONSCONRITIRB8TB8RENSM2SM1SM0中断源5.1.3中断涉及的几个环节TCONIT0IE0IT1IE1TR0TF0TR1TF1TF1——T1的溢出中断标志硬件置1,硬件清0(也可软件清0)TF0——T0的溢出中断标志。(同TF1,只是针对T0的)IE1——外部中断1(/INT1)请求标志。外部有中断请求时,硬件使IE1置1,硬件清0。IE0——外部中断0(/INT0)请求标志。IT1——外部中断1(/INT1)触发类型控制位。IT1=0,低电平触发。IT1=1,下降沿触发。IT0——外中断0(/INT0)触发类型控制位,用法同IT1。中断源5.1.3中断涉及的几个环节在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。1、中断屏蔽(第一级管理)IEEX0ET0EX1ET1ES—EAEA——总控制位“—”——未定义位ES——串口控制位ET1——T1中断控制位EX1——/INT1控制位ET0——T0中断控制位EX0——/INT0控制位若为“1”,开关接通,允许例如SETBEA若为“0”,开关断开,不允许例如CLRIE.75.1.3中断涉及的几个环节中断控制(两级管理)2、中断优先级(第二级管理)CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。!!!为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。IPPX0PT0PX1PT1PS——————PS——串口的中断优先级别PT1——定时/计数器T1的中断优先级别PX1——外部中断1的中断优先级别PT0——定时/计数器T0的中断优先级别PX0——外部中断0的中断优先级别该位是“1”时,为高级优先级该位是“0”时,为低级优先级5.1.3中断涉及的几个环节中断控制(两级管理)对同时发生多个中断申请时:☞不同优先级的中断同时申请(很难遇到)——先高后低☞相同优先级的中断同时申请(很难遇到)——按序执行☞正处理低优先级中断又接到高级别中断——高打断低☞正处理高优先级中断又接到低级别中断——高不理低中断优先级处理原则5.1.3中断涉及的几个环节中断控制(两级管理)5.1.4MCS-51中断的响应过程CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:(1)CPU正处理相同级别或更高级别的中断;(2)正在执行指令,还未到最后一个机器周期;(3)正在执行的指令是RETI或访问IP、IE指令,则执行完上述指令后,再执行一条指令后,才会响应新中断。响应条件响应过程:(假设已使某中断请求标志置1)(1)先使相应优先级状态触发器置1;(2)执行一个硬件子程序的调用,1)硬件清零相应中断请求标志(TI、RI除外)2)将当前PC内容压入堆栈——保护断点;3)将中断服务子程序入口地址送PC——转移。返回过程:(RETI执行后)(1)使相应优先级状态触发器清0。(2)从堆栈中弹出栈顶的两个字节内容送PC——恢复断点。(3)CPU接着中断处继续执行原程序。5.1.4MCS-51中断的响应过程5.2.1外部中断低电平/负脉冲→INT0/INT1引脚可触发中断TF1TR1TF0TR0IE1IT1IE0IT0TCON(88H)IT0/IT1:INT0/1的触发方式选择位:IT0/IT1=0时,INT0/INT1是低电平有效;IT0/IT1=1时,INT0/INT1是负跳变有效。低电平触发引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。负脉冲触发CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU可记忆申请、可自动撤除中断申请。5.2MCS-51外中断中断响应后,必须及时清除TCON、SCON中的已响应中断请求标志,否则,会引起中断的重复查询和响应。①外中断请求的撤销:对于边沿触发方式:由于触发信号过后就消失,撤销自然也就是自动的。对于电平触发方式:需通过软硬件结合的方法来实现撤销。②定时中断请求的撤销:定时中断后,硬件自动清“0”。③串行中断请求的撤销:不能自动清“0”,须用软件的方法在中断服务子程序中进行清“0”。SM0SM1SM2RENTB8RB8TIR1SCONTF1TR1TF0TR0IE1IT1IE0IT0TCON(88H)5.2.2中断请求的撤除5.2.3中断应用前后要做的几项工作1)、中断初始化开中断允许:必须选择优先级:根据需要选择,可有/可无设置控制位:INTx—触发方式(ITx)Tx—TCON,TMOD,TRx,初值……RI/TI—SCON,REN,RB8,TB8,……2)、中断后进入中断服务后:保护现场,关中断,……退出中断服务前:恢复现场,开中断,设Tx的初值,清TI/RI,……中断服务程序的最后一条指令必是RETI5.2.4中断应用程序举例:例:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。已知:(B)=01h,要求采用边沿触发,低优先级。此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。P1.0P1.7INT1300ORG0000HLJMPMAINORG0013H;中断矢量LJMPINTMAIN:SETBEA;开总中断允许“开关”SETBEX1;开分中断允许“开关”CLRPX1;0优先级(也可不要此句)SETBIT1;边沿触发MOVB,#01H;给B寄存器赋初值HERE:SJMPHERE;原地等待中断申请INT:MOVA,B;自B寄存器中取数RLA;左环移一次MOVB,A;存回B,备下次取用(MOVP1,A);输出到P1口RETI;中断返回中断服务程序1.外部中断1的中断入口地址为()。(A)0003H(B)000BH(C)0013H(D)001BH2.各中断源发出的中断申请信号,都会表记在MCS-51系统中的()。(A)TMOD(B)TCON/SCON(C)IE(D)IP3、下列有关MCS-51中断优先级控制的叙述中,错误的是A、低优先级不能中断高优先级,但高优先级能中断优先级B、同级中断不能嵌套C、同级中断请求按时间的先后顺序响应D、同时同级的多中断请求,将形成阻塞,系统无法响应4、外中断初始化的内容不包括A、设置中断响应方式B、设置外中断允许C、设置中断总允许D、设置中断方式5、执行中断返回指令,要从堆栈弹出断点地址,以便去执行被中断了的主程序。从堆栈弹出断点地址送给A、AB、CYC、PCD、DPTR6、在MCS-51中,需要外加电路实现中断撤除的是A、定时中断B、脉冲方式的外中断C、串行中断D、电平方式的外中断7、中断查寻,查寻的是A、中断的请求信号B、中断的标志位C、外中断方式控制位D、中断的允许控制位8、在中断流程中有“关中断”的操作,对于外部中断0,要关中断应复位中断允许寄存器的A、EA、ET0B、EA、EX0C、EA、ESD、EA、EX19.若(IP)=00010100B,则优先级最高者为,最低为。10、中断响应最快响应时间为三个机器周期。()11、中断响应的条件是什么?12、MCS-51外中断有几种触发方式?一般情况下,采用哪种触发方式较好?13、中断响应的条件是什么?CPU响应中断请求后,不能自动清除哪些中断请求标志?