第5章-中断.ppt

上传人:s****8 文档编号:67324367 上传时间:2022-12-24 格式:PPT 页数:57 大小:996.50KB
返回 下载 相关 举报
第5章-中断.ppt_第1页
第1页 / 共57页
第5章-中断.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《第5章-中断.ppt》由会员分享,可在线阅读,更多相关《第5章-中断.ppt(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第6章 51单片机的中断系统 主要内容主要内容 中断的基本概念中断的基本概念 中断的系统结构中断的系统结构 中断的响应过程中断的响应过程 中断的的应用编程中断的的应用编程第6章 51单片机的中断系统 在在CPU和外设交换信息时,存在着和外设交换信息时,存在着快速快速CPU和和慢速慢速外设间外设间的矛盾,机器内部有时也可能出现的矛盾,机器内部有时也可能出现突发事件突发事件,为,为此,计算机中通常采用中断技术。此,计算机中通常采用中断技术。中断中断 CPU和外设并行工作,当外设数据准备好和外设并行工作,当外设数据准备好(或有某种突发事或有某种突发事件发生件发生)时向时向CPU提出请求,提出请求,C

2、PU暂停正在执行的程序转而为该外暂停正在执行的程序转而为该外设服务设服务(或处理紧急事件或处理紧急事件),处理完毕再回到原断点继续执行原程,处理完毕再回到原断点继续执行原程序。序。第6章 51单片机的中断系统 在在CPU和外设交换信息时,存在着快速和外设交换信息时,存在着快速CPU中断中断源源引起中断的原因引起中断的原因,中断申请的来源,中断源可以是中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设置。设备、故障、时钟、调试中人为设置。中断优先级中断优先级 当有多个中断源同时向当有多个中断源同时向CPU申请中断时,申请中断时,CPU优优先响应最需紧急处理的中断请求,处理完毕再响应

3、优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的先级别较低的,这种预先安排的响应次序。,这种预先安排的响应次序。第6章 51单片机的中断系统 中断的嵌套中断的嵌套 在中断系统中,高优先级的中断请求能中断正在在中断系统中,高优先级的中断请求能中断正在进行的较低级的中断源处理。进行的较低级的中断源处理。中断系统中断系统 能实现中断功能并能对中断进行管理的硬件和软件能实现中断功能并能对中断进行管理的硬件和软件称为中断系统。称为中断系统。本章将讨论本章将讨论MCS51系列单片机的中断系统。系列单片机的中断系统。第6章 51单片机的中断系统 中断请求是在执行程序的过程中的随机发生的,中断请求

4、是在执行程序的过程中的随机发生的,中断系统要解决的问题是:中断系统要解决的问题是:1)CPU在不断的执行指令中,是如何在不断的执行指令中,是如何检测检测到到随机随机发发 生的中断请求?生的中断请求?2)如何使中断的双方()如何使中断的双方(CPU方和中断源方)均能人方和中断源方)均能人 为控制,为控制,允许中断或禁止中断允许中断或禁止中断。第6章 51单片机的中断系统 3)由于中断产生的随机性,不可能在程序中安排调子)由于中断产生的随机性,不可能在程序中安排调子 程序指令或转移指令,那么程序指令或转移指令,那么如何实现正确的转移如何实现正确的转移,以便为该中断源服务呢?以便为该中断源服务呢?4

5、)中断源有多个,而中断源有多个,而CPU只有一个只有一个,当有多个中断源,当有多个中断源 同时有中断请求时,用户怎么控制同时有中断请求时,用户怎么控制 CPU 按照自己的按照自己的 需要安排需要安排响应次序响应次序?5)中断服务完毕,如何正确地返回到原断点处?)中断服务完毕,如何正确地返回到原断点处?第6章 51单片机的中断系统 6.1 6.1 中断系统结构中断系统结构 8XX51有有5个中断源,个中断源,3个在片内,个在片内,2个在片外,个在片外,它们在程序存贮器中有固定的中断入口地址,它们在程序存贮器中有固定的中断入口地址,当当CPU响应中断时,硬件自动形成这些地址,由此响应中断时,硬件自

6、动形成这些地址,由此进入中断服务程序;进入中断服务程序;5个中断源有两级中断优先个中断源有两级中断优先级,可形成中断嵌套。级,可形成中断嵌套。第6章 51单片机的中断系统 6.1 6.1 中断系统结构中断系统结构 8XX51有有5个中断源,其符号、名称、产生个中断源,其符号、名称、产生条件及中断服务程序的入口地址如表条件及中断服务程序的入口地址如表6.1。第6章 51单片机的中断系统 二、中断控制的有关寄存器二、中断控制的有关寄存器 (1)(1)中断的允许和禁止中断的允许和禁止中断控制寄存器中断控制寄存器IEIE IE IE寄存器的各位对应相应的中断源,如果允许该中断寄存器的各位对应相应的中断

7、源,如果允许该中断源中断则该位置源中断则该位置1 1,禁止中断则该位,禁止中断则该位0 0。EA EA -ET2ET2 ES ES ET1ET1 EX1 EX1 ET0 ET0 EX0 EX0中断中断总控总控允允/禁禁 不不 用用 T2T2允允/禁禁 串行口串行口允允/禁禁 T1T1允允/禁禁 INT1 INT1允允/禁禁 T0 T0允允/禁禁 INT0INT0允允/禁禁 第6章 51单片机的中断系统 EAEA:中断总控开关,是:中断总控开关,是CPUCPU是否响应中断的前提。是否响应中断的前提。EA=1EA=1,CPUCPU开中断开中断;EA=0 EA=0,CPUCPU关中断。关中断。ESE

8、S:串行口中断允许位,串行口中断允许位,ES=1ES=1,允许串行口发送,允许串行口发送/接收中断;接收中断;ES=0ES=0,禁止串行口中断。,禁止串行口中断。ET1ET1:定时器:定时器T1T1中断允许位,中断允许位,ET1=1ET1=1,允许,允许T1T1计数溢出中断;计数溢出中断;ET1=0ET1=0,禁止,禁止T1T1中断。中断。第6章 51单片机的中断系统 ET0ET0:定时器定时器T0T0中断允许位中断允许位,ET0=1 ET0=1,允许,允许T1T1计数溢出中断;计数溢出中断;ET0=0ET0=0,禁止,禁止T0T0中断。中断。EX1EX1:外部中断外部中断INT1INT1允许

9、位,允许位,EX1=1EX1=1,允许,允许INT1INT1中断;中断;EX1=0EX1=0,禁止,禁止INT1INT1中断。中断。EX0EX0:外部中断外部中断INT0INT0允许位,允许位,EX0=1EX0=1,允许,允许INT0INT0中断;中断;EX0=0EX0=0,禁止,禁止INT0INT0中断。中断。第6章 51单片机的中断系统 (2)(2)中断请求标志及外部中断方式选择寄存器中断请求标志及外部中断方式选择寄存器TCONTCON第6章 51单片机的中断系统 说明:说明:1.IT0和和IT1为外中断为外中断INT0 和和INT1中断触发方式选择,中断触发方式选择,若选下降沿触发则相应

10、位置若选下降沿触发则相应位置1;若选低电平触发;若选低电平触发,IT相应位置相应位置0。2.某中断源有中断请求,该中断标志置某中断源有中断请求,该中断标志置1,无中断请求,无中断请求,该中断标志置该中断标志置0 3.TR0 和和 TR1 为定时器为定时器T0和和T1 工作启动和停止控制。工作启动和停止控制。第6章 51单片机的中断系统 (3)(3)中断优先级管理寄存器中断优先级管理寄存器IP IP 五个中断源的优先级别由五个中断源的优先级别由IP寄存器管理,相应位置寄存器管理,相应位置1,则该中断源优先级别高,置则该中断源优先级别高,置0的优先级的优先级 别低。别低。-PT2PSPT1PX1P

11、T0PX0无无用用位位无无用用位位T2高高/低低串行串行 口口高高/低低 T1高高/低低INT1高高/低低 T0高高/低低 INT0高高/低低 第6章 51单片机的中断系统 T0T1串行口串行口 当当 某几个中断源在某几个中断源在IP寄存器相应位同为寄存器相应位同为1或同为零或同为零时,由内部查询确定优先级,查询的顺序是:时,由内部查询确定优先级,查询的顺序是:CPU优先响应先查询的中断请求优先响应先查询的中断请求T2INT0INT1第6章 51单片机的中断系统 MCS_51系列单片机的中断结构系列单片机的中断结构 第6章 51单片机的中断系统 6.2 中断响应过程中断响应过程 一、中断处理过

12、程一、中断处理过程 中断处理过程分为四个阶段:中断处理过程分为四个阶段:中断请求中断请求;中断响应中断响应;中断处理中断处理;中断返回。中断返回。MCS-51系列单片机的中断过程流程如图系列单片机的中断过程流程如图6.2所示。所示。NNYYYN执执 行行 指指 令令中断标志中断标志1?(中断请求中断请求?)指令指令最后一个最后一个T周期周期?EA=1?允允 许许 位位=1?CPU 判判 别优别优 先权先权,响响 应优应优 先权高先权高 的中断的中断断点的断点的PC进栈进栈,中断服务入口地址送中断服务入口地址送PC撤撤 除除 中中 断断 标标 志志中中 断断 服服 务务中中 断断 返返 回回,断

13、断 点点 出出 栈栈 送送 PC 中断请求中断请求.中断响应中断响应中断服务中断服务中断返回中断返回第6章 51单片机的中断系统 中断请求、中断响应过程由硬件完成。中断请求、中断响应过程由硬件完成。中断服务程序应根据需要进行编写。程序中要注意保中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。护现场和恢复现场。中断返回是通过执行一条中断返回是通过执行一条RETI中断返回指令,使堆栈中断返回指令,使堆栈中被压入的断点地址送中被压入的断点地址送PC,从而返回主程序的断点继,从而返回主程序的断点继续执行主程序。另外续执行主程序。另外RETI还有恢复优先级状态触发器还有恢复优先级状态触发

14、器 的作用,因此不能以的作用,因此不能以RET指令代替指令代替“RETI”指令。指令。第6章 51单片机的中断系统 若某个中断源通过编程设置,处于被打开的状态,若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情况单片机不响并满足中断响应的条件,然而下面三种情况单片机不响应此中断:应此中断:当前正在执行的那条指令没执行完;当前正在执行的那条指令没执行完;当前响应了同级或高级中断;当前响应了同级或高级中断;正在操作正在操作IEIE、IPIP中断控制寄存器或执行中断控制寄存器或执行RETIRETI指令。指令。在正常的情况下,从中断请求信号有效开始,到中断在正常的情况下,

15、从中断请求信号有效开始,到中断得到响应,通常需要得到响应,通常需要3个机器周期到个机器周期到8个机器周期。个机器周期。第6章 51单片机的中断系统 二、中断请求的撤除二、中断请求的撤除 CPU响应中断后,应撤除该中断请求标志,否则会响应中断后,应撤除该中断请求标志,否则会再次中断。再次中断。对定时计数器对定时计数器T0、T1的溢出中断,的溢出中断,CPU响应中断响应中断后,硬件自动清除中断请求标志后,硬件自动清除中断请求标志TF0和和TF1。对边沿触发的外部中断对边沿触发的外部中断INT1和和INT0,CPU响应中响应中断后硬件自动清除中断请求标志断后硬件自动清除中断请求标志IE0和和IE1。

16、第6章 51单片机的中断系统 对电平触发的外部中断,对电平触发的外部中断,CPU在响应中断时也不会在响应中断时也不会自动清除中断标志,因此,在自动清除中断标志,因此,在CPU响应中断后应立即撤响应中断后应立即撤除除INT1或或INT0的低电平信号。的低电平信号。对于串行口中断,对于串行口中断,CPU响应中断后,没有用硬件清除响应中断后,没有用硬件清除中断请求标志中断请求标志TI、RI,即这些中断标志,即这些中断标志 不会自动清除,不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意必须用软件清除,这是在编串行通信中断服务中应该注意的。的。第6章 51单片机的中断系统 6.3 6.3

17、 中断的汇编语言程序和中断的汇编语言程序和C C语言程序设计语言程序设计 用户对中断的控制和管理,实际是对用户对中断的控制和管理,实际是对4个与中断有关个与中断有关的寄存器的寄存器IE、TCON、IP、SCON进行控制或管理。这几进行控制或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关位进行预置。这几个寄存器的有关位进行预置。第6章 51单片机的中断系统 6.3 6.3 中断的汇编语言程序和中断的汇编语言程序和C C语言程序设计语言程序设计 在中断程序的编制中应注意:在中断程序的编制中应注意:开中断总控开关开中断

18、总控开关EA,置位中断源的中断允许位。,置位中断源的中断允许位。对外部中断对外部中断INT0、INT1应选择中断触发方式应选择中断触发方式多个中断源中断,应设定中断优先级,预置多个中断源中断,应设定中断优先级,预置IP。第6章 51单片机的中断系统 若要在执行当前中断程序时禁止更高优先级中断,若要在执行当前中断程序时禁止更高优先级中断,可以采用软件关可以采用软件关CPU中断。或禁止某中断源中断,在中中断。或禁止某中断源中断,在中断返回前再开放中断。断返回前再开放中断。编写中断服务程序,并注意用保护现场和恢复现场,编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器

19、中的信息。以免中断返回时,丢失原寄存器、累加器中的信息。第6章 51单片机的中断系统 汇编语言的中断服务程序按规定的中断矢量地汇编语言的中断服务程序按规定的中断矢量地址存入,由于五个中断矢量地址址存入,由于五个中断矢量地址0003H、000BH、0013H、001BH、0023H之间相距很近,往往装不下之间相距很近,往往装不下一个中断服务程序,通常将中断服务程一个中断服务程序,通常将中断服务程 序安排在程序安排在程序存贮器的其他地址空间,而在矢量地址的单元中序存贮器的其他地址空间,而在矢量地址的单元中安排一条转移指令。安排一条转移指令。一、汇编语言中断程序的设计一、汇编语言中断程序的设计一、汇

20、编语言中断程序的设计一、汇编语言中断程序的设计第6章 51单片机的中断系统 例例1.1.在图在图6.36.3中中P1.4P1.4P1.7P1.7接有四个发光二极管,接有四个发光二极管,P1.0P1.0P1.3P1.3接有四个开关,消抖电路用于接有四个开关,消抖电路用于 产生中断请求信号,产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过通过INT0INT0向向CPUCPU申请中断,要求:初时发光二极管全黑,申请中断,要求:初时发光二极管全黑,每中断一次,每中断一次,P1.0P1.0P1.3P1.3所接的开关状态反映到发光二

21、所接的开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,电路和极管上,且要求开关断开的对应发光二极管亮,电路和现象如下:现象如下:第6章 51单片机的中断系统 、第6章 51单片机的中断系统 ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG 0003H ORG 0003H ;INT0INT0中断入口中断入口 AJMP AJMP WBIWBI ;转中断服务程序转中断服务程序 ORG 0030H ORG 0030H ;主程序;主程序 MAIN:MAIN:MOV P1 MOV P1,#0FH#0FH ;高;高4 4位灯灭,低四位输入先写位灯灭,低四位

22、输入先写1 1 SETB IT0 SETB IT0 ;边沿触发中断边沿触发中断 SETB EX0 SETB EX0 ;允许外中断;允许外中断0 0中断中断 SETB EA SETB EA ;开中断开关;开中断开关 SJMP$SJMP$;等待中断;等待中断 WBIWBI:MOV P1MOV P1,#0FH#0FH ;P1P1先写入先写入“1 1”且灯灭且灯灭 MOV AMOV A,P1 P1 ;输入开关状态换到高;输入开关状态换到高4 4位位 SWAP A SWAP A ;低;低4 4位开关状态电平位开关状态电平 MOV P1MOV P1,A A ;输出到;输出到P1P1高高4 4位位 RETI

23、RETI END END中中断断服服务务第6章 51单片机的中断系统 此例的执行现象是,每重置一次四个开关此例的执行现象是,每重置一次四个开关的开、合状态,四个发光二极管维持原来的亮、的开、合状态,四个发光二极管维持原来的亮、灭状态,仅当来回拔动消抖电路开关后,产生灭状态,仅当来回拔动消抖电路开关后,产生了中断,发光二极管才反映新置的开关状态。了中断,发光二极管才反映新置的开关状态。第6章 51单片机的中断系统 例例2.89C51的的P1口接一个共阴极的数码管,利用消抖开口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一关产生中断请求信号,每来回拔动一 次开关,产生一次次开关,

24、产生一次中断,用数码管显示中断的次数中断,用数码管显示中断的次数(最多不超过最多不超过15次次)。第6章 51单片机的中断系统 第6章 51单片机的中断系统 ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN ORG 0013H ORG 0013H ;INT1INT1中断入口中断入口 AJMP INT1 AJMP INT1 ;转中断服务程序;转中断服务程序 ORG 0030H ORG 0030H ;主程序;主程序MAINMAIN:SETB IT1 SETB IT1 ;边沿触发中断;边沿触发中断 SETB EX1 SETB EX1 ;允许;允许INT1INT1中断中断

25、 SETB EA SETB EA ;开中断开关;开中断开关 MOV R0MOV R0,#0#0 ;计数初值为;计数初值为0 0 MOV A MOV A,#3FH#3FH ;“0 0”的字形码送的字形码送A AAL1AL1:MOV P1MOV P1,A A ;显示数码;显示数码AL2AL2:CJNE R0CJNE R0,#0FH#0FH,AL1 AL1 ;没满;没满1515次循环显示次循环显示 MOV R7MOV R7,#0FFH#0FFH ;满;满1515次,显次,显F F,延时,延时 第6章 51单片机的中断系统 DJNZ R7 DJNZ R7,MOV P1MOV P1,#0#0 ;关显示;

26、关显示 CLR EA CLR EA ;关中断;关中断 SJMP SJMP ;结束;结束INT1INT1:INC R0 INC R0 ;中断次数加;中断次数加1 1 MOV A MOV A,R0R0 MOV DPTR MOV DPTR,TAB TAB ;DPTRDPTR指向字形码表首址指向字形码表首址 MOVC AMOVC A,A+DPTR A+DPTR ;查表;查表 POP DPHPOP DPH POP DPL POP DPL ;弹出断点;弹出断点 MOV DPTRMOV DPTR,#AL1#AL1 PUSH DPL PUSH DPL PUSH DPH PUSH DPH ;修改中断返回点,;修

27、改中断返回点,AL1AL1压入堆栈压入堆栈 RETI RETI ;从堆栈;从堆栈AL1AL1地址地址PCPC,返主程序,返主程序ALAL处处 第6章 51单片机的中断系统 TABTAB:DB 3FHDB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH6DH DB 7DH DB 7DH,07H07H,7FH7FH,6FH6FH,77H77H,7CH7CH DB 39H DB 39H,5EH5EH,79H79H,71H71H ;段码表;段码表(字形码字形码)END END 上面程序每中断一次,执行一次中断服务程序上面程序每中断一次,执行一次中断服务程序INT1。在中断服务程

28、序中,累计中断次数并在中断服务程序中,累计中断次数并 查字形表,返回查字形表,返回到主程序到主程序AL1地址执行显示。地址执行显示。为方便说明程序的执行情况,将上面程序重排在为方便说明程序的执行情况,将上面程序重排在同一页。同一页。第6章 51单片机的中断系统 ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN ORG 0013H ORG 0013H AJMP INT1 AJMP INT1 ORG 0030H ORG 0030HMAINMAIN:SETB TI1SETB TI1 SETB EX1 SETB EX1 SETB EA SETB EA MOV R0 MOV

29、 R0,#0#0 MOV A,#3FH MOV A,#3FHAL1AL1:MOV P1MOV P1,A A AL2AL2:CJNE R0CJNE R0,#0FH#0FH,AL1AL1 MOV R7 MOV R7,#0FFH#0FFH DJNZ R7 DJNZ R7,MOV P1 MOV P1,#0#0 CLR EA CLR EA SJMP SJMP INT1INT1:INC R0 INC R0 MOV A MOV A,R0R0 MOV DPTR MOV DPTR,TAB TAB MOVC A MOVC A,A+DPTRA+DPTR POP DPH POP DPH POP DPL POP DPL

30、 MOV DPTR MOV DPTR,#AL1#AL1 PUSH DPL PUSH DPL PUSH DPH PUSH DPH RETI RETI ;AL1AL1地址地址PCPC,返主程序返主程序AL1 AL1 TAB:DB 3FHTAB:DB 3FH,06H06H,5BH5BH,第6章 51单片机的中断系统 以上中断在以上中断在AL1或或AL2两指令处发生,究竟是哪两指令处发生,究竟是哪 一指令处中断是随机的,为保证返回到一指令处中断是随机的,为保证返回到AL1显示显示F ,这里采用修改中断返回点的办法,这里采用修改中断返回点的办法,即先从栈中弹出中即先从栈中弹出中断响应时压入的断响应时压入

31、的 断点弹到断点弹到DPTR中,修改中,修改DPTR为用户为用户需要的返回点,并将其压需要的返回点,并将其压 入堆栈,再通过执行入堆栈,再通过执行RETI指指令弹出栈中内容到令弹出栈中内容到PC、弹出的即为修改后的地址,从而、弹出的即为修改后的地址,从而返回到主返回到主 程序中用所希望的地址执行。程序中用所希望的地址执行。第6章 51单片机的中断系统 上例中中断次数在主程序判断,目的是使读者了解上例中中断次数在主程序判断,目的是使读者了解修改中断返回点的方法,如果改在中断服务程序中判断,修改中断返回点的方法,如果改在中断服务程序中判断,编程简洁些,下面仅介绍和上例中的不同部分的程序。编程简洁些

32、,下面仅介绍和上例中的不同部分的程序。第6章 51单片机的中断系统 MOV R0 MOV R0,#0#0 ;计数初值为;计数初值为0 0 MOV P1 MOV P1,#3FH#3FH ;显示;显示0 0 MOV DPTR MOV DPTR,#TAB#TAB ;指向字形码表;指向字形码表AGAAGA:SJMP SJMP ;等待中断;等待中断INT1INT1:INC R0 INC R0 ;中断次数加;中断次数加1 1 MOV A MOV A,R0R0 MOVC A MOVC A,A+DPTR A+DPTR ;查字形码表;查字形码表 MOV P1MOV P1,A A ;显示;显示 CJNE R0CJ

33、NE R0,#0FH#0FH,RERE ;1515次中断未到转次中断未到转RERE CLR EA CLR EA ;1515次到关中断次到关中断RERE:RETI RETI ;返回主程序的;返回主程序的AGAAGA处处TABTAB:DB 3FHDB 3FH,06H06H,5BH5BH,4FH4FH,66H66H,6DH6DH,7DH,07H 7DH,07H DB 7FH DB 7FH,6FH6FH,77H77H,7CH7CH,39H39H,5EH5EH,79H79H,71H71H第6章 51单片机的中断系统 C51使用户能编写高效的中断服务程序,编译器在使用户能编写高效的中断服务程序,编译器在

34、规定的中断源的矢量地址中放入无条件转移指令,使规定的中断源的矢量地址中放入无条件转移指令,使CPU响应中断后响应中断后自动自动地从矢量地址跳转到中断服务程序的实地从矢量地址跳转到中断服务程序的实际地址,而无需用户去安排。中断服务程序定义为函数,函际地址,而无需用户去安排。中断服务程序定义为函数,函数的完整定义如下。数的完整定义如下。第6章 51单片机的中断系统 其中其中interrupt n 表示将函数声明为中断服务函数,表示将函数声明为中断服务函数,n 为中为中断源编号,可以是断源编号,可以是031间的整数间的整数,不允许是带运算符的,不允许是带运算符的表达式,表达式,n 通常取以下值:通常

35、取以下值:返回值返回值 函数名函数名(参数参数)模式再入模式再入interrupt nusing m第6章 51单片机的中断系统 0 外部中断外部中断0;1 定时器定时器/计数器计数器0溢出中断溢出中断2 外部中断外部中断1;3 定时器定时器/计数器计数器1溢出中断溢出中断4 串行口发送与接收中断串行口发送与接收中断 Using m 定义函数使用的工作寄存器组,定义函数使用的工作寄存器组,m的取值范围为的取值范围为03,可缺省,它,可缺省,它 对目标代码的影响是:函数入口处将当前寄对目标代码的影响是:函数入口处将当前寄存器保存,使用存器保存,使用m指定的寄存器组,函数退出时原寄存器组恢指定的寄

36、存器组,函数退出时原寄存器组恢复。选不同的工作寄存器组,可方便实现寄存器组的现场保护。复。选不同的工作寄存器组,可方便实现寄存器组的现场保护。第6章 51单片机的中断系统 再入再入:属性关键字属性关键字reentrant将函数定义为再入将函数定义为再入的,在的,在C51中,普通函数中,普通函数(非再入的非再入的)不能不能递归递归调用,调用,只有再入函数才可被递归调用。只有再入函数才可被递归调用。第6章 51单片机的中断系统 中断服务函数不允许用于外部函数,它对目标代中断服务函数不允许用于外部函数,它对目标代码影响如下:码影响如下:当调用函数时,当调用函数时,SFR中的中的ACC、B、DPH、D

37、PL和和PSW(当需要时入栈当需要时入栈)。如果不使用寄存器组切换,中断函数所需的所有工如果不使用寄存器组切换,中断函数所需的所有工作寄存器作寄存器Rn都入栈。都入栈。函数退出前,所有工作寄存器出栈。函数退出前,所有工作寄存器出栈。函数由函数由“RETI”指令终止。指令终止。第6章 51单片机的中断系统 例例1.1.在图在图6.36.3中中P1.4P1.4P1.7P1.7接有四个发光二极管,接有四个发光二极管,P1.0P1.0P1.3P1.3接有四个开关,消抖电路用于接有四个开关,消抖电路用于 产生中断请求信号,产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,当消抖电路的开

38、关来回拔动一次将产生一个下降沿信号,通过通过INT0INT0向向CPUCPU申请中断,要求:初时发光二极管全黑,申请中断,要求:初时发光二极管全黑,每中断一次,每中断一次,P1.0P1.0P1.3P1.3所接的开关状态反映到发光二所接的开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,电路和极管上,且要求开关断开的对应发光二极管亮,电路和现象如下:现象如下:第6章 51单片机的中断系统 、第6章 51单片机的中断系统 例如,对本节的例例如,对本节的例1用用C语言编程语言编程#includeint0()interrupt 0 /*INT0中断函数中断函数*/P1=0 x0f;/*输入

39、端先置输入端先置1,灯灭,灯灭*/P1=4;/*读入开关状态,并左移四位,读入开关状态,并左移四位,使开关反映在发光二极管上使开关反映在发光二极管上*/main()EA=1;/*开中断总开关开中断总开关*/EX0=1;/*允许允许INT0中断中断*/IT0=1;/*下降沿产生中断下降沿产生中断*/while(1);/*等待中断等待中断*/第6章 51单片机的中断系统 主函数执行主函数执行while(1);语句进入死循环等待中断,当;语句进入死循环等待中断,当拨动拨动INT0的开关后,进入中断函数,读入的开关后,进入中断函数,读入P1.0P1.3的的开关状态并将状态数据右移四位到开关状态并将状态

40、数据右移四位到P1.4P1.7的位置上的位置上输出控制输出控制LED亮,执行完中断,返回到等待中断的亮,执行完中断,返回到等待中断的while(1)语句,等待下一次的中断。语句,等待下一次的中断。例例2 对本节的例对本节的例2记录并显示中断次数改用记录并显示中断次数改用C语言编语言编程,可有两种编程方法。程,可有两种编程方法。第6章 51单片机的中断系统 例例2.89C51的的P1口接一个共阴极的数码管,利用消抖开口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一关产生中断请求信号,每来回拔动一 次开关,产生一次次开关,产生一次中断,用数码管显示中断的次数中断,用数码管显示中断

41、的次数(最多不超过最多不超过15次次)。第6章 51单片机的中断系统 第6章 51单片机的中断系统 法法1:在主程序中控制中断次数:在主程序中控制中断次数#includechar i;code char tab16=0 x3f,0 x06,0 x5b,0 x4F,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;int()interrupt 2i+;/*计中断次数计中断次数*/P1=tabi;/*查表,次数送显示查表,次数送显示*/第6章 51单片机的中断系统 main()EA=1;EX1=1;IT1

42、=1;ap5:P1=0 x3f;/*显示显示“0”*/for(i=0;i16;);/*当当I16等待中断等待中断*/goto ap5;/*当当i=16重复下重复下 一轮一轮16次中次中*/第6章 51单片机的中断系统 法二:在中断服务程序中控制中断次数法二:在中断服务程序中控制中断次数#includechar i;code char tab16=0 x3f,0 x06,0 x5b,0 x4F0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;第6章 51单片机的中断系统 int()interrupt 2

43、 i+if(i16)P1=tabi;elsei=0;P1=0 x3f;main()EA=1;EX1=1;IT1=1;P1=0 x3f;while(1);/*等待中断等待中断*/第6章 51单片机的中断系统 每个中断源有固定的中断服务程序的入口地址每个中断源有固定的中断服务程序的入口地址(称称矢量地址或向量地址矢量地址或向量地址)。当。当CPU响应中断以响应中断以 后单片机内后单片机内部硬件保证它能自动的跳转到该地址。因此,此地址部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序是应该熟记的,在汇编程序 中,中断服务程序应存放中,中断服务程序应存放在正确的向量地址内。在正确的

44、向量地址内。6.4 小小 结结(1)中断技术是实时控制中的常用技术,)中断技术是实时控制中的常用技术,51系列单片系列单片机有三个内部中断,二个外部中断。所谓机有三个内部中断,二个外部中断。所谓 外部中断就外部中断就是在外部引脚上有产生中断所需要的信号。是在外部引脚上有产生中断所需要的信号。第6章 51单片机的中断系统 (或存放一条转移指令或存放一条转移指令);而在;而在C语言中是靠语言中是靠Interrupt n的关键字的关键字n自动设置的。自动设置的。(2)单片机的中断是靠内部的寄存器管理的,这就是)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器中断允许寄存器IE,中断优先权寄存

45、器,中断优先权寄存器IP,必须在,必须在CPU开中断即开全局中断开关开中断即开全局中断开关EA,开各中断源的中断开关,开各中断源的中断开关,CPU才能响应该中断源的才能响应该中断源的 中断请求,其中缺一不可。中断请求,其中缺一不可。第6章 51单片机的中断系统 (3)从程序表面看来,主程序和中断服务程序好象是)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,没有关连的,只有掌握中断响应的过程,才能理解中断才能理解中断的的发生发生和和返回返回,看得懂中断程序,并能编写高质量中断,看得懂中断程序,并能编写高质量中断程序。程序。(4)本章重点应掌握中断的基本概念,并能熟练编制)本章重点应掌握中断的基本概念,并能熟练编制中断程序。中断程序。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com