1、第六章第六章 MCS-51MCS-51的中断系统的中断系统 6 61 1 中断的概念中断的概念 1 1中断:中断:由于外界的事件的突然发生,中止当前程序的执行,转去执行外界事件处理由于外界的事件的突然发生,中止当前程序的执行,转去执行外界事件处理程序,待外界事件处理程序执行完毕后,再继续执行被中止的程序。中断通常是程序,待外界事件处理程序执行完毕后,再继续执行被中止的程序。中断通常是一种硬件事件。一种硬件事件。例:串行通讯一贞数据接收到事件,例:串行通讯一贞数据接收到事件,。中断用途:中断用途:1)实时处理外界紧急事件。实时处理外界紧急事件。2)分时操作,解决快速分时操作,解决快速CPU与慢速
2、外设之间的矛盾。与慢速外设之间的矛盾。3)将若干任务按级别处理。将若干任务按级别处理。2 2中断源中断源 请求中断的来源。请求中断的来源。3 3中断级别中断级别 响应中断的优先顺序。响应中断的优先顺序。4 4中断向量中断向量 由硬件提供的中断程序入口地址。由硬件提供的中断程序入口地址。5 5中断响应中断响应 相当于完成两种操作:相当于完成两种操作:1 1)执行一条)执行一条 LCALLLCALL“中断入口地址中断入口地址”;2 2)置位中断优先级触发器,用于阻挡同级或低级中断的响应。)置位中断优先级触发器,用于阻挡同级或低级中断的响应。6 6中断返回中断返回 中断服务程序的最后一条为中断服务程
3、序的最后一条为 RETI RETI 用于继续被中止的程序,复位中断优先用于继续被中止的程序,复位中断优先级触发器,以便能够响应其他的中断。级触发器,以便能够响应其他的中断。6 62 MCS-51 2 MCS-51 的中断系统的中断系统 1.中断系统结构中断系统结构 2 2中断源中断源 由图见六个中断源:由图见六个中断源:IE0IE0、TF0TF0、IE1IE1、TF1TF1、RI+TIRI+TI、TF2+EXF2TF2+EXF2。出处:出处:TCONTCON、SCON SCON。TCON:TF1TR1TF0TR0IE1IT1IE0IT0 TIRISCON:3.3.外部中断触发方式控制外部中断触
4、发方式控制 设置为下降沿触发方式,保证负脉冲宽度大于一个机器周期。设置为下降沿触发方式,保证负脉冲宽度大于一个机器周期。若采用低电平触发方式,必须保证低电平的持续时间小于中断服务程序执行时若采用低电平触发方式,必须保证低电平的持续时间小于中断服务程序执行时间间。4 4中断的屏蔽与开放控制中断的屏蔽与开放控制 通过通过IEIE的设置实现:的设置实现:EA-ET2ESET1EX1ET0EX0IE:“1”开放。开放。“0”屏蔽。屏蔽。5 5中断优先级确定中断优先级确定 通过通过IP的设置实现两级优先级的设置实现两级优先级高级或低级。高级或低级。IP:-PT2PSPT1PX1PT0PX0“1”高级。高
5、级。“0”低级。低级。低级中断执行时,能被高级中断所中断,不能被同级中断所中断。低级中断执行时,能被高级中断所中断,不能被同级中断所中断。高级中断执行时,不能被任何中断所中断。高级中断执行时,不能被任何中断所中断。同级中断同级中断同时申请中断同时申请中断时,按以下顺序响应:时,按以下顺序响应:IE0TF0IE1TF1RIIE0TF0IE1TF1RI、TITF2TITF2、EXF2EXF2 6 6中断入口地址中断入口地址 IE0IE0:0003H0003HTF0TF0:000BH000BHIE1IE1:0013H0013HTF1TF1:001BH001BHRIRI、TITI:0023H0023H
6、TF2TF2、EXF2EXF2:002BH002BH7.中断的响应过程中断的响应过程 遇下述三种情况将不能立即响应:遇下述三种情况将不能立即响应:1)1)CPUCPU正在处理相同的或更高优先级的中断;正在处理相同的或更高优先级的中断;响应中断过程:响应中断过程:3)3)正在执行的指令是正在执行的指令是RETIRETI或是访问或是访问IEIE或或IPIP的指令。的指令。CPUCPU在执行在执行RETIRETI或访问或访问IEIE、IPIP的指令后,至少需要再执行一条指令才会响应新的中断请求。的指令后,至少需要再执行一条指令才会响应新的中断请求。2)2)现行的机器周期不是所执行指令的最后一个机器周
7、期;现行的机器周期不是所执行指令的最后一个机器周期;1)1)置位中断优先级触发器。置位中断优先级触发器。2)2)由硬件产生子程序长调用(由硬件产生子程序长调用(LCALLLCALL),),转去执行中断服务程序。转去执行中断服务程序。3)3)在中断服务程序中,遇在中断服务程序中,遇RETIRETI指令后返回。(回到调用中断服务程序的下一条指令后返回。(回到调用中断服务程序的下一条 指令处继续执行,同时复位中断服务程序。)指令处继续执行,同时复位中断服务程序。)8 8外部中断响应时间外部中断响应时间 1)1)若中断未被任何条件阻止,最快响应时间为若中断未被任何条件阻止,最快响应时间为3 3个机器周
8、期。个机器周期。2)2)正执行同级或高级中断:正执行同级或高级中断:取决于中断服务程序执行时间。取决于中断服务程序执行时间。3 3)执行不是)执行不是RETI RETI 或访问或访问 IEIE、IP IP 的指令,现行机器周期是所执行指令的最后一的指令,现行机器周期是所执行指令的最后一 个机器周期:个机器周期:仅需仅需3 3个机器周期。个机器周期。4 4)现行机器周期不是所执行指令的最后一个机器周期,且不是)现行机器周期不是所执行指令的最后一个机器周期,且不是RETIRETI或访问或访问IEIE、IP 的指令:的指令:不超过不超过6 6 个机器周期。个机器周期。5 5)正在执行的指令是)正在执
9、行的指令是RETIRETI或访问或访问IEIE、IPIP的指令:的指令:不超过不超过8 8个机器周期。个机器周期。6 63 3 中断系统的设计中断系统的设计 1 1固定时间间隔的产生固定时间间隔的产生 利用利用T0T0、T1T1的方式的方式2 2自动重装方式产生定时中断,在中断服务程序中累加中自动重装方式产生定时中断,在中断服务程序中累加中断次数达到固定的时间间隔,设置断次数达到固定的时间间隔,设置“定时时间到定时时间到”标志。标志。例:例:利用利用T0T0计数器工作于方式计数器工作于方式2 2,每到,每到1 1 秒产生一秒产生一“时间到时间到”标志。标志。(F(FOSCOSC=12MHZ)=
10、12MHZ)MS50_BUFEQU30HS1_BUFEQU31HS1_LABBIT00HORG0000HLJMPMAINORG000BHLJMPT0_SER ORG0030HMAIN:MOVSP,#0CFH LCALL INIT_T0M0:JNB S1_LAB,M0CLR S1_LABLCALL TASK1LCALL TASK2LCALL ASK3LJMP M0INIT:MOV TMOD,#02HSETB TR0MOV TH0,#06HSETB ET0 SETB EAMOV MS50_BUF,#0MOV S1_BUF,#0CLR S1_LABRETT0_SER:PUSH PSWPUSH ACC
11、INC MS50_BUFMOV A,MS50_BUFCLR CSUBB A,#200JC TS1MOV MS50_BUF,#0INC S1_BUFMOV A,S1_BUFCLR CSUBB A,#20JC TS1MOV S1_BUF,#0SETB S1_LABTS1:POP ACCPOP PSWRETIEND 说明:说明:1 1)利用)利用T0T0、T1T1工作于方式工作于方式2 2,最大定时中断间隔为,最大定时中断间隔为0.256MS0.256MS,要产生较大时要产生较大时 间间隔,需要累加中断次数较多。间间隔,需要累加中断次数较多。T2T2计数器工作于自动重装方式时,最计数器工作于自动重装
12、方式时,最 大定时中断间隔为大定时中断间隔为65.536MS65.536MS,可通过累加较少的中断次数达到较大的时可通过累加较少的中断次数达到较大的时 间间隔。间间隔。2 2)利用此方式可产生任意大的时间间隔。)利用此方式可产生任意大的时间间隔。2 2顺序控制顺序控制灯光灯光“跑龙跑龙”控制控制 灯光“跑龙”控制:在环行布置的一圈灯中,每隔一定时间间隔、顺序点亮在环行布置的一圈灯中,每隔一定时间间隔、顺序点亮一一 盏灯。盏灯。例:例:编写一段程序实现:每隔编写一段程序实现:每隔0.10.1秒点亮一盏灯,硬件见下图。秒点亮一盏灯,硬件见下图。MS50_BUFEQU30HMS100_BUFEQU3
13、1HMS100_LABBIT00HORG 0000HLJMP MAINORG 000BHLJMP T0_ISRORG 0030HMAIN:MOVSP,#0CFH LCALL INIT M1:JNB MS100_LAB,M1CLR MS100_LABLCALL RL_LAMPLJMP M1 RL_LAMP:MOV A,P0RLC AMOV P0,AMOV A,P1RLC AMOV P1,AMOV A,P2RLC AMOV P2,AJNC RL_L1MOV P0,#01HCLR C RL_Ll:RET INIT:MOV TMOD,#02HMOV TH0,#06HSETB TR0SETB ET0SE
14、TB EAMOV MS50_BUF,#0MOV MS100_BUF,#0CLR MS100_LABMOV P0,#01MOV P1,#0MOV P2,#0CLR CRET T0_ISR:PUSH PSWPUSH ACCINC MS50_BUFMOV A,MS50_BUFCLR CSUBB A,#200JC TS1MOV MS50_BUF,#0INC MS100_BUFMOV A,MS100_BUFCLR C SUBB A,#2JC TS1 MOV MS100_BUF,#0 SETBMS100_LABTS1:POP ACCPOP PSWRETIEND 3 3交通信号灯的控制交通信号灯的控制 东西
15、、南北十字路口交通信号灯控制。东西、南北十字路口交通信号灯控制。1)1)灯的布置灯的布置 2)2)控制规则:控制规则:南北通南北通8 秒秒 停侯停侯2 秒秒 东西通东西通6 秒秒 停侯停侯2 秒秒 3)3)控制动作的状态分解控制动作的状态分解 南北通南北通8 8秒:亮:秒:亮:ERER、WRWR、SGSG、NGNG;灭:其余。灭:其余。停后停后2 2秒:秒:亮:亮:NYNY、SYSY、EYEY、WYWY。灭:其余。灭:其余。东西通东西通6 6秒:亮:秒:亮:EGEG、WGWG、SRSR、NRNR;灭:其余。灭:其余。4)4)硬件设计硬件设计 状状态态时时间间NRP1.0NGP1.1NYP1.2
16、SRP1.3SGP1.4SYP1.5WRP1.6WGP1.7WYP2.0EP2.1EGP2.2EYP2.3P1P2180100101001005 2H0 2H220010010010012 4H0 9H361001000100108 9H0 4H420010010010012 4H0 9H5)5)根据硬件的状态分解根据硬件的状态分解 6)6)软件编程软件编程TIME_BUFEQU30HSTATE_BUFEQU31HSTATEMAXEQU04HS1_LABBIT00HORG0000HLJMPMAINORG000BHLJMPT0_SERORG0030H MAIN:MOVSP,#0CFHLCALL
17、INIT M0:LCALL OUT_STATEM1:JNB S1_LAB,M1CLR S1_LABDEC TIME_BUFMOV A,TIME_BUF CJNE A,#0,M1LCALL NEXT_STATELJMP M0 OUT_STATE:MOVA,STATE_BUFMOVB,#3MULABMOVDPTR,#STATE_TABADDA,DPLMOVDPL,AMOVA,DPHADDC A,#0MOVDPH,AMOVA,#0 MOVC A,A+DPTRMOVTIME_BUF,AMOVA,#1MOVC A,A+DPTRMOVP1,AMOVA,#2MOVC A,A+DPTRMOVP2,ARET S
18、TATE_TAB:DB08H,52H,02HDB02H,24H,09HDB20H,89H,04HDB02H,24H,09H NEXT_STATE:INCSTATE_BUFMOVA,STATE_BUFCLRCSUBBA,#STATEMAXJCNS1MOVSTATE_BUF,#0NS1:RET INIT:MOVTMOD,#02HSETBTR0MOVTH0,#06H SETBET0SETBEAMOVSTATE_BUF,#0MOVMS50_BUF,#0MOVS1_BUF,#0CLRS1_LABRET T0_SER:同例同例1。本章习题本章习题1.MCS-51 1.MCS-51 单片机有几个中断源,几级
19、中断?单片机有几个中断源,几级中断?2.2.编程设定:外部中断编程设定:外部中断*INT0INT0开放中断、下降沿触发中断、低级中断;外部中断开放中断、下降沿触发中断、低级中断;外部中断 *INT1INT1开放中断、低电平触发中断、高级中断;按照上述设置,若两个中断同开放中断、低电平触发中断、高级中断;按照上述设置,若两个中断同 时申请,说明先响应哪个中断?时申请,说明先响应哪个中断?3.3.编程设定:编程设定:T0T0计数器溢出为高级中断、串行通讯为高级中断,其余为低级中计数器溢出为高级中断、串行通讯为高级中断,其余为低级中 断,五断,五个中断源全部开放中断。若五个中断源同时申请中断,说明中断响应的个中断源全部开放中断。若五个中断源同时申请中断,说明中断响应的 顺序。顺序。4.编程实现:通过定时器中断形式,在编程实现:通过定时器中断形式,在 P1.1 引脚输出引脚输出10KHZ的方波。的方波。(fosc=12MHZ)