《盛贤君-单片机原理及应用-第3章中断》由会员分享,可在线阅读,更多相关《盛贤君-单片机原理及应用-第3章中断(35页珍藏版)》请在金锄头文库上搜索。
1、9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院第第3章章 MCS-51的中断系统及应用的中断系统及应用3.1 中断中断的基本概念的基本概念3.2 MCS-51的中断源的中断源3.3 中断的控制中断的控制3.4 中断查询与响应中断查询与响应3.5 外部中断外部中断3.6 中断请求的撤除中断请求的撤除3.7 中断响应时间中断响应时间3.8 外部外部中断编程练习中断编程练习9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院中断中断:CPU执行正常程序时,系统中出现特殊请求执行正常程序时,系统中出现特殊请求(中断(
2、中断申请)申请),CPU暂时中止当前的程序,转去处理更紧暂时中止当前的程序,转去处理更紧急的事件急的事件(执行中断服务程序),(执行中断服务程序),处理完毕后,处理完毕后,CPU自动返回原程序自动返回原程序(中断返回)(中断返回)的过程。的过程。3.1 中断中断的基本概念的基本概念执行执行主程序主程序继续执行继续执行主程序主程序断点断点中断请求中断请求中断响应中断响应执行执行中断中断处理处理程序程序中断返回中断返回9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院中断的作用中断的作用提高提高CPU的工作效率;的工作效率;可使多项任务共享一个资源(可使多
3、项任务共享一个资源(CPU););可及时处理突发事件,实现分时操作、实时处理;可及时处理突发事件,实现分时操作、实时处理;解决解决CPU与外设之间的速度矛盾,使与外设之间的速度矛盾,使CPU高效率地高效率地对多个外部设备进行管理。对多个外部设备进行管理。3.1 中断中断的基本概念的基本概念9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院中断应用举例:打印机操作状态好?状态好? 送一个字符送一个字符NYCPU采用查询方采用查询方式为打印机服务式为打印机服务中断服务程序中断服务程序送一个字符送一个字符中断返回中断返回CPU采用中断方式为打印机服务采用中断
4、方式为打印机服务做做某某一一工工作作主主程程序序中断响应中断响应中断返回中断返回断点断点1断点断点2断点断点33.1 中断中断的基本概念的基本概念9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 3.2.1 MCS-51的中断系统结构的中断系统结构MCS-51有有5个个中断源:外部中断中断源:外部中断(2个)个)、定时器中断、定时器中断(2个)个) 和串行口中断。和串行口中断。中断标志寄存器中断允许寄存器中断允许寄存器IE/ int0T0/ int1T1ES中断源中断源标识符标识符高优先级高优先级中断请求中断请求中断矢量中断矢量中断源中断源标识符标识
5、符低优先级低优先级中断请求中断请求中断矢量中断矢量源允许 总允许EA中断优先级寄存器IP3.2 MCS-51的中断源的中断源返回返回9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院T1的请求标志的请求标志T0的请求标志的请求标志/INT0的请求标志的请求标志3.2.2 中断标志寄存器中断标志寄存器TF1TR1TF0TR0IE1IT1IE0IT01、控制寄存器、控制寄存器TCON (SFR地址:地址:88H)2、串行口控制寄存器、串行口控制寄存器SCON (SFR地址:地址:98H)SM0SM1SM2RENTB8RB8TIRI3.2 MCS-51的中断
6、源的中断源/INT1的请求标志的请求标志串行口接收请求标志串行口接收请求标志串行口发送请求标志串行口发送请求标志返回返回9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院3.3.1 中断的开放和关闭控制中断的开放和关闭控制EA: 总允许位(一级控制)总允许位(一级控制)ES: 串行口中断允许位串行口中断允许位(二级控制)(二级控制) ES=1时,允许时,允许RI、TI引发中断,否则禁止串口中断。引发中断,否则禁止串口中断。ET1、ET0:定时器:定时器T1、T0允许位允许位(二级控制)(二级控制)EX1、EX0:外中断:外中断/ int1、/int0允
7、许位允许位(二级控制)(二级控制) “1”允许;允许;“0”禁止中断。禁止中断。EAXXESET1 EX1 ET0 EX03.3 中断的控制中断的控制由中断允许寄存器由中断允许寄存器IE实现两级控制实现两级控制(SFR地址地址: 0A8H)返回返回结构图结构图例如,要允许外部中断例如,要允许外部中断INT0开放,则可用下列指令:开放,则可用下列指令: SETB EA SETB EX0或或mov IE,#81H9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院PS:串行口中断优先级设定位;串行口中断优先级设定位;PT1、PT0:定时器定时器T1、T0中断
8、优先级设定位;中断优先级设定位;PX1、PX0:外中断外中断 int1、0中断优先级设定位;中断优先级设定位; =1: 高优先级,高优先级,=0:为低优先级。:为低优先级。XXXPSPT1PX1PT0PX03.3.2 中断的优先级控制中断的优先级控制由中断优先级寄存器由中断优先级寄存器IPIP实现两级控制实现两级控制(SFR地址地址: 0B8H)3.3 中断的控制中断的控制返回返回结构图结构图9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 由于由于IP寄存器的设定,将寄存器的设定,将5个中断源分为个中断源分为两个级别两个级别。对同时发生多个中断申请
9、时,中断优先级的处理将遵循对同时发生多个中断申请时,中断优先级的处理将遵循下面基本原则:下面基本原则:3.3.3 中断的优先级排队中断的优先级排队不同优先级的中断同时申请不同优先级的中断同时申请( (很难遇到很难遇到) ) 先高后低先高后低相同优先级的中断同时申请相同优先级的中断同时申请( (很难遇到很难遇到) ) 按序执行按序执行(见图见图见图见图)正处理低优先级中断又接到高级别中断正处理低优先级中断又接到高级别中断 高打断低高打断低正处理高优先级中断又接到低级别中断正处理高优先级中断又接到低级别中断 高不理低高不理低3.3 中断的控制中断的控制9/3/2024目录目录单片机课程单片机课程大
10、连理工大学电气工程学院大连理工大学电气工程学院举例:如何改变中断源的优先级顺序举例:如何改变中断源的优先级顺序 从中断系统的从中断系统的硬件硬件结构图结构图可以清楚地看出同一级别中可以清楚地看出同一级别中5个中断源的查询顺序。很明显,要改变这种顺序只能通过个中断源的查询顺序。很明显,要改变这种顺序只能通过IP的设置。的设置。例如:要想将串行口的级别设为最高时,将例如:要想将串行口的级别设为最高时,将IP中的中的PS置置1。 setb ip.4 或或 mov 0b8h,#10hIP寄存器寄存器3.3 中断的控制中断的控制XXXPSPT1PX1PT0PX09/3/2024目录目录单片机课程单片机课
11、程大连理工大学电气工程学院大连理工大学电气工程学院3.4 中断查询与响应中断查询与响应 在在每个机器周期每个机器周期中,所有的中断源都要按照其顺序检中,所有的中断源都要按照其顺序检查一遍。到查一遍。到S6状态时,就查找到所有被激活的中断申请并状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的排好优先权。在下一个机器周期的S1状态,只要不受阻断,状态,只要不受阻断,就开始响应高级中断。就开始响应高级中断。如果发生下列情况,中断将被阻止:如果发生下列情况,中断将被阻止: 1、同级或高级中断正在执行时;、同级或高级中断正在执行时; 2、当前的机器周期不是指令的最后一个机器周期;、当
12、前的机器周期不是指令的最后一个机器周期; 3、CPU正在执行的指令是正在执行的指令是RETI或访问或访问IE、IP寄存器时,寄存器时, CPU是不会响应中断,而且要等到是不会响应中断,而且要等到该指令的下一条指令该指令的下一条指令执执行完后中断才能响应。行完后中断才能响应。3.4.1 中断的查询中断的查询返回返回9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院当满足中断条件时当满足中断条件时1.CPU查询到某一中断源后,使相应查询到某一中断源后,使相应的的“优先级激活触发器优先级激活触发器”置位用以置位用以阻断同级或低级中断。阻断同级或低级中断。2.
13、在硬件控制下,在硬件控制下,自动将当时自动将当时PC的内的内容(断点地址)进栈容(断点地址)进栈,以备返回;,以备返回;3.然后然后将相应的中断矢量装入将相应的中断矢量装入PC,使使CPU转向对应的中断服务程序。转向对应的中断服务程序。4.中断服务程序最后一条指令是中断服务程序最后一条指令是RETI,它将清除,它将清除“优先级激活触发器优先级激活触发器”,从堆栈中弹出断点地址并装入从堆栈中弹出断点地址并装入PC中中,使,使CPU回到原来主程序断点处回到原来主程序断点处继续运行。继续运行。3.4 中断查询与响应中断查询与响应(上电启动地址)(上电启动地址)(INT0中断入口)中断入口)(T0中断
14、入口)中断入口)(INT1中断入口)中断入口)(T1中断入口)中断入口)(串口中断入口)(串口中断入口)0000H0003H000BH0013H001BH0023H3.4.2 中断的响应过程中断的响应过程9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院3.5 外部中断外部中断在在MCS-51引脚上有引脚上有/INT0、/INT1两个外部的中断输入。作两个外部的中断输入。作为外部事件的触发信号,其信号必须满足一定的要求,否则为外部事件的触发信号,其信号必须满足一定的要求,否则将不能正确地引发中断。将不能正确地引发中断。MCS-51/INT0 /INT1
15、 /INT0触发方式选择触发方式选择TF1TR1TF0TR0IE1IT1IE0IT0TCON (SFR地址:地址:88H)CPU在每个机器周期的在每个机器周期的S5P2期间对它期间对它们进行一次检测。们进行一次检测。系统设定了两种触发方式:系统设定了两种触发方式: 下降沿触发下降沿触发、低电平触发低电平触发,由控制寄,由控制寄存器存器TCON中的中的IT0、IT1位来确定。位来确定。/INT1触发方式选择触发方式选择IT=1时,下降沿触发;时,下降沿触发;IT=0时,低电平触发。时,低电平触发。返回返回9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院
16、 1、边沿触发方式:、边沿触发方式:在相邻的两个机器周期,如果第一次在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则采集是高电平,第二次采集是低电平时,则TCON中的标志中的标志IE0或或IE1置位。所以,在边沿触发方式时:外部设备发出的置位。所以,在边沿触发方式时:外部设备发出的边沿信号边沿信号(高电平和低电平)的时间应(高电平和低电平)的时间应大于一个机器周期大于一个机器周期,否则信号将可能漏检。否则信号将可能漏检。 2、电平触发方式:、电平触发方式:CPU在在每个机器周期的每个机器周期的S5P2期间期间采集采集到到INT0或或INT1的引脚为低电平时将激活标志的引脚
17、为低电平时将激活标志IE0或或IE1。所。所以在这种触发方式中,外部的以在这种触发方式中,外部的低电平至少应保留一个机器周低电平至少应保留一个机器周期期。MCS51对外部中断触发信号的要求对外部中断触发信号的要求3.5 外部中断外部中断 如果外电路的信号不能满足要求,可使用如果外电路的信号不能满足要求,可使用触发器触发器等等硬件电路解决。硬件电路解决。9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院3.6 中断请求的撤除中断请求的撤除以外中断电平触发以外中断电平触发为例:为例: 当当CPU响应该中断进入到服务程序后,在执行响应该中断进入到服务程序后,
18、在执行RETI指令返回主程序前,必须将外部的低电平撤掉指令返回主程序前,必须将外部的低电平撤掉,否,否则当则当CPU返回主程序后,会因为外部过长的低电平返回主程序后,会因为外部过长的低电平信号而使其再次进入中断,这样不仅造成一次多余信号而使其再次进入中断,这样不仅造成一次多余的错误操作,而且使主程序无法正常运行。的错误操作,而且使主程序无法正常运行。同理,其它中断源也存在类似的问题。所以在使用同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚中断时必须清楚在返回在返回主主程序前时,其中断请求程序前时,其中断请求(标志)是否要撤除、如何撤除(标志)是否要撤除、如何撤除等问题。等问题。9/
19、3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院一种解决外部电平请求信号过长的硬件方案外设外设(CP)触发器触发器QP1.0此电路还可以解决外部脉冲过窄,不能正确引发中断的情况。此电路还可以解决外部脉冲过窄,不能正确引发中断的情况。中断服务程序中断服务程序 MCS-51INTXP1.0D QCP S外部设备中服程序中完成中服程序中完成撤撤消消“ “1 1” ”“ “1 1” ”申请申请申请申请ANL P1,#FEHORL P1,#01HRETI服务程序服务程序主体主体CLR IE03.6 中断请求的撤除中断请求的撤除9/3/2024目录目录单片机课程单片
20、机课程大连理工大学电气工程学院大连理工大学电气工程学院解决外部中断信号过长的软件方案解决外部中断信号过长的软件方案在中断处理程序的最后、返回主程在中断处理程序的最后、返回主程序之前,对外中断信号进行判断、序之前,对外中断信号进行判断、等待,只有当外信号消失后再返回等待,只有当外信号消失后再返回主程序;主程序;软件方案的一优点:简化硬件电路;软件方案的一优点:简化硬件电路;缺点:降低了程序的运行速度,同缺点:降低了程序的运行速度,同时不能解决外部中断信号过窄的问时不能解决外部中断信号过窄的问题。题。具体问题具体对待,选用哪种方案具体问题具体对待,选用哪种方案要根据具体情况综合考虑。要根据具体情况
21、综合考虑。中断服务程序中断服务程序RETI中断中断处理处理程序程序外信号撤出?外信号撤出?NY3.6 中断请求的撤除中断请求的撤除9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院MCS-51的中断请求的撤除方法的中断请求的撤除方法中断源中断源中断标志中断标志说说 明明撤除方法撤除方法INT0、INT1IE0、IE1外部边沿触发外部边沿触发无影响无影响INT0、INT1IE0、IE1外部电平触发外部电平触发电路、软件撤除电路、软件撤除T0、T1TF0、TF1 定时计数器中断定时计数器中断自动清除标志自动清除标志ESRI、TI串行口中断串行口中断软件清除
22、标志软件清除标志注:此表指使用中断服务程序来处理中断事件时的情况。注:此表指使用中断服务程序来处理中断事件时的情况。如果采用查询的方法来处理事件时,都需要软件来清除标志。如果采用查询的方法来处理事件时,都需要软件来清除标志。3.6 中断请求的撤除中断请求的撤除9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院3.7 中断响应时间(以中断响应时间(以INTx为例)为例)每个机器周期的每个机器周期的S5P2时刻,时刻,INTx引脚的电平被锁存到内引脚的电平被锁存到内部寄存器中,待下一个周期查询。部寄存器中,待下一个周期查询。 1 1、最短时间:、最短时间:
23、中断请求有效,查询后在下一个周期便开始中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔到执行中断服务程序,中间相隔3个机器周期。个机器周期。C1C2C3C4C5返回前一次中断响应时间:中断响应时间:从中断请求有效(外部中断请求标志置从中断请求有效(外部中断请求标志置1) 到转向中断入口地址所需要的响应时间到转向中断入口地址所需要的响应时间执行入口地执行入口地址中的指令址中的指令电
24、平锁存电平锁存中断查询中断查询长调用,转向长调用,转向入口地址入口地址9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 2、最长时间:、最长时间:如果中断信号发生在如果中断信号发生在前面所说前面所说的的3种情况时,种情况时,响应时间就要变长:响应时间就要变长: (1)响应时间取决于正在执行的同级或高级中断的执行)响应时间取决于正在执行的同级或高级中断的执行时间;时间; (2)指当前)指当前CPU执行的指令是多周期指令,如乘除法指执行的指令是多周期指令,如乘除法指令(令(4个周期),最坏情况,还要等个周期),最坏情况,还要等3个周期。这样响应周期个周期
25、。这样响应周期变为变为3+3=6个周期个周期; (3)CPU当前执行的指令是当前执行的指令是RETI或访问或访问IE、IP寄存器时,寄存器时,本指令(本指令(1个周期)没有响应,且下一条指令执行完后才能个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过响应,这样附加的等待时间最长不会超过5个周期(个周期(1+4)。)。整个响应为整个响应为5+3=8个周期个周期。 这样,如果不考虑第这样,如果不考虑第1种情况,整个中断响应的时间范种情况,整个中断响应的时间范围应当是:围应当是: 38个机器周期个机器周期。3.7 中断响应时间(以中断响应时间(以INTx为例)为例)9/
26、3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 3.8 外部中断编程练习外部中断编程练习 【例例】电路如图。要求编程实现:主程序将电路如图。要求编程实现:主程序将P1口的口的8个个LED从上到下循环显示(间隔时间约从上到下循环显示(间隔时间约1S ),中断时(),中断时(INT0)使使8个个LED同时闪烁同时闪烁5次(间隔时间约次(间隔时间约1S,设单片机晶振为,设单片机晶振为6MHz)。)。 +5VINT0P1.0MCS-51P1.1P1.2P1.3P1.4P1.5P1.6P1.774LS245R89/3/2024目录目录单片机课程单片机课程大连理工
27、大学电气工程学院大连理工大学电气工程学院(1 1)主程序)主程序)主程序)主程序 ORG 0000H LJMP STARTSTART:MOV IE,#10000001B;允许允许INT0中断中断 MOV IP,#00000001B;INT0中断中断优先优先 MOV TCON,#01H ;INT0边沿触发边沿触发方式方式 MOV SP,#70H MOV A,#80H ;左移初值;左移初值LOOP1:RL A MOV P1,A CALL DELAY;延时;延时1s AJMP LOOP1 程序可分为程序可分为3个模块:个模块:主程序主程序、中断服务程序、延时子程序、中断服务程序、延时子程序 3.8
28、外部中断编程练习外部中断编程练习9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 ORG 0003HORG 0003H LJMP EXT0 LJMP EXT0EXT0EXT0: PUSH ACCPUSH ACC PUSH PSW PUSH PSW SETB RS0 SETB RS0 CLR RS1 CLR RS1 MOV A MOV A,#0FFH#0FFH;为使;为使;为使;为使P1P1全亮全亮全亮全亮 MOV R2MOV R2,# # ;闪烁;闪烁;闪烁;闪烁5 5次次次次LOOP3LOOP3:MOV P1MOV P1,A A CALL DELA
29、Y CALL DELAY;延时;延时;延时;延时1s1s CPL A CPL A DJNZ R2 DJNZ R2, LOOP3LOOP3 POP PSW POP PSW POP ACC POP ACC RETIRETI1010 3.8 外部中断编程练习外部中断编程练习(2 2)中)中)中)中断断断断服服服服务务务务程程程程序序序序9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院(3 3)延时子程序(约)延时子程序(约)延时子程序(约)延时子程序(约1s1s)DELAY:MOV R5,#5 D1:MOV R6,#200 D2:MOV R7,#250 D
30、3:DJNZ R7,D3;1ms DJNZ R6,D2;约;约0.2s DJNZ R5,D1;约;约1s RET 3.8 外部中断编程练习外部中断编程练习9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 【例例】故障故障诊断处理诊断处理。当系统无故障时,。当系统无故障时,4 4个故障源输入个故障源输入端全为低电平,显示灯全熄灭,只有当某部分出现故障,端全为低电平,显示灯全熄灭,只有当某部分出现故障,其相应的输入线才由低电平变为高电平从而引起中断。中其相应的输入线才由低电平变为高电平从而引起中断。中断服务程序的任务就是判定故障源,并进行相应的灯光显断服
31、务程序的任务就是判定故障源,并进行相应的灯光显示示。(外中断扩展问题)(外中断扩展问题)9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院程序编制如下: ORG 0000H ORG 0000H AJMP MA1 AJMP MA1 ;转向主程序;转向主程序 ORG 0003HORG 0003H AJMP SERVE AJMP SERVE ;转向中断服务程序;转向中断服务程序MA1: MOV P1,#55H MA1: MOV P1,#55H ;全部指示灯灭,并为读入故障信号作准备全部指示灯灭,并为读入故障信号作准备 SETB IT0 SETB IT0 ;选
32、取外中断为脉冲触发方式;选取外中断为脉冲触发方式 SETB EX0 SETB EX0 ;允许外中断;允许外中断0 0中断中断 SETB EA SETB EA ;开;开CPUCPU中断中断LOOP: MOV A,P1 LOOP: MOV A,P1 ; ANL A,#55H ANL A,#55H ; JNZ LOOP JNZ LOOP ;有故障信号转;有故障信号转LOOPLOOP MOV P1,#55H MOV P1,#55H ;无故障信号灯全灭,并为读入故障信号作准备无故障信号灯全灭,并为读入故障信号作准备 SJMP LOOP SJMP LOOP ;等待中断;等待中断9/3/2024目录目录单片
33、机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院SERVE:JNB P1.0,L1;中断服务程序,查询故障源,若有故障,将;中断服务程序,查询故障源,若有故障,将 ;相应的灯点亮;相应的灯点亮 SETB P1.1 SJMP L2L1: CLR P1.1L2: JNB P1.2,L3 SETB P1.3 SJMP L4L3: CLR P1.3L4: JNB P1.4,L5 SETB P1.5 SJMP L6L5: CLR P1.5L6: JNB P1.6,L7 SETB P1.7 SJMP L8L7: CLR P1.7L8: RETI9/3/2024目录目录单片机课程单片机课程大
34、连理工大学电气工程学院大连理工大学电气工程学院学习中断技术,要重点理解的内容学习中断技术,要重点理解的内容1.中断矢量的含义以及在中断矢量的含义以及在ROM中的地址单元;中的地址单元;2.中断发生的条件(中断发生的条件(5个中断源);个中断源);3.CPU如何响应中断(转到中断服务程序)?如何响应中断(转到中断服务程序)?4.与查询方式相比,中断方式的优点是什么?与查询方式相比,中断方式的优点是什么?5.为什么中断调用后,会自动返回原程序?为什么中断调用后,会自动返回原程序?6.编制中断服务程序要注意什么问题?编制中断服务程序要注意什么问题?7.中断与子程序调用的区别是什么?中断与子程序调用的
35、区别是什么? 9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院在在CPUCPU已经开放了外部中断允许的前提下:已经开放了外部中断允许的前提下:在在INT0/INT1INT0/INT1引脚输入一个引脚输入一个负脉冲负脉冲或或低电平低电平, TCONTCON寄存器中的寄存器中的IE0/IE1IE0/IE1标志位自动变标志位自动变“1”1”,CPUCPU检测到检测到IE0/IE1IE0/IE1变变“1”1”后后, ,将将自动自动产生指产生指令:令: LCALL 0003H(/0013H)LCALL 0003H(/0013H)执行中断服务程序执行中断服务程序
36、, ,并将并将IE0/IE1IE0/IE1标志位标志位自动清自动清“0”,0”,以备下次申以备下次申请。请。外部中断(INT0,INT1)申请及CPU的处理过程:9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院中断与子程序调用区别在于:(1) 中断出现是随机的,可能出现,也可能不出现,更不知道什么会时候出现,即被中断程序的断点无法预测。而子程序的执行由调用指令LCALL或ACALL实现,只要满足特定条件,一定会发生,断点由程序员控制。 (2)中断服务程序入口地址(也称为中断向量)由硬件决定,与CPU类型有关,不能更改。而子程序入口地址由用户安排。 (
37、3) 子程序中可以任意调用另一子程序,但中断有优先级,同级或低级中断不能打断正在执行的同级或更高优先级中断服务程序。 (4) 尽管子程序返回指令RET和中断返回指令RETI均会将栈顶两个字节信息装入PC,恢复断点,但RETI还清除相应中断优先级触发器,因此中断返回指令不可用子程序返回指令RET代替。 9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院3.2.4 MCS-51扩展外部中断请求输入口扩展外部中断请求输入口 8051单片机只提供了两个外部中断请求输入端,如果需要使用多于两个的中断源,就必须扩展外部中断请求输入口。 1 1定时器定时器/ /计数
38、器用于扩展外部中断请求输入口计数器用于扩展外部中断请求输入口 8051单片机有两个定时器/计数器,它们作为计数器使用时,计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特性,适当设置计数初值,就可以把计数输入端T0(或T1)作为外部中断请求输入口。其特点是以占用内部定时中断为代价的。中断服务程序的入口地址仍然为000BH或001BH。9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院2 2查询方式扩展外部中断请求输入口查询方式扩展外部中断请求输入口 把多个中断源通过硬件(如与非门)引入外部中断输入端,同时又连到某个I/O口。当有中断源申请中断时
39、,在中断服务程序中通过软件查询可确定哪一个是正在申请的中断源,其查询的次序可由中断优先级决定。其特点是中断响应速度较慢。 适用于外部中断源较多的场合。下页例题中,我们采用74LS21A四输入端双与门实现该任务。 3 3使用专用芯片扩展外部中断请求输入口使用专用芯片扩展外部中断请求输入口 当外部中断源较多,同时又要求中断响应速度很高时,查询方式扩展外部中断请求输入口的方法很难满足要求。这时可以使用专用接口芯片进行外部中断请求输入口的扩展。下面例题中,我们采用74LS21A四输入端双与门实现该任务。 9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院查询方
40、式扩展外部中断请求输入口的查询方式扩展外部中断请求输入口的电路实现:74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则74ls21输出低电平,触发中断程序。中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口,优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定为 1、仅仅只响应最优先中断;2、按优先级顺序依次执行各个中断。9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电
41、气工程学院 设计程序如下:设计程序如下:ORG 0000HLJMP MAINORG 0003H; 外部中断0中断服务入口地址LJMP INT; 转中断服务ORG 0100H MAIN: SETB EA; 开总中断允许SETB EX0; 开INT0中断SETB IT0 ; 下降沿有效中断服务程序清单如下: INTI CALL D20; 延时去抖动MOV P1,#0FFH;P1口送全1值(准双向口原因)MOV A, P1; 读P1口各引脚(设另四口未用) CJNE A, #0FFH,CLOSE; 验证是否确实有键闭合 AJMP INT0; 无键按下(按键时间过短)则退;出中断9/3/2024目录目录单片机课程单片机课程大连理工大学电气工程学院大连理工大学电气工程学院 CLOSE: JNB ACC.3, KEY 0; 查询0号键 JNB ACC.2, KEY 1; 查询1号键 JNB ACC.1, KEY 2; 查询2号键 JNB ACC.0,KEY 3; 查询3号键 INT0:RETI KEY 0:; 7号键处理程序 KEY 01:MOV A, P1; 再读P1口各引脚 JNB ACC.0, FUNC71; 确认键是否释放 RETI KEY 1:; 其他键处理程序 D20: ; 20ms延时子程序 END