版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、思考两个问题什么是中断?为什么使用中断?什么是中断?CPUCPU暂时暂时中止其正在执行的程序,转去执行请求中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序再返回执行原来中止的程序, , 叫做中断。叫做中断。主程序主程序响应中断请求响应中断请求中断服务程序中断服务程序返回主程序返回主程序继续执行主程序继续执行主程序断点断点什么是中断? 中断嵌套流程 为什么要设置中断?为什么要设置中断? 提高提高CPUCPU工作效率工作效率 具有实时处理功能具有实时处理功能 具有故障处理功能具有故障处理功能 实现分时
2、操作实现分时操作中断功能强弱是计算机性能优劣的重要标志中断功能强弱是计算机性能优劣的重要标志中断系统要解决的问题:中断系统要解决的问题:CPU在不断的指令执行中,是如何检测到随机发生的中断请求?在不断的指令执行中,是如何检测到随机发生的中断请求?如何使中断的双方(如何使中断的双方(CPU方和中断源方)均能人为控制,允许中断或禁止中断。方和中断源方)均能人为控制,允许中断或禁止中断。由于中断产生的由于中断产生的随机性随机性,不可能在程序中放置调用子程序指令或转移指令,那,不可能在程序中放置调用子程序指令或转移指令,那么如何实现正确的转移,以便为该中断源服务呢?么如何实现正确的转移,以便为该中断源
3、服务呢?中断源有多个,而中断源有多个,而CPU只有一个,当有多个中断源同时有中断请求时,用户怎只有一个,当有多个中断源同时有中断请求时,用户怎么控制么控制CPU按照自己的需要排列响应次序?按照自己的需要排列响应次序?中断服务完毕,如何正确的返回到断点处继续执行后序指令?中断服务完毕,如何正确的返回到断点处继续执行后序指令?MCSMCS5151的中断系统的中断系统MCS-51中断系统中断系统MCS-51中断系统结构中断系统结构MCS-51中断处理过程中断处理过程MCS-51中断系统应用中断系统应用 在在CPU和外设交换信息时,存在着和外设交换信息时,存在着快速快速CPU和和慢速外设慢速外设间的间
4、的矛盾,机器内部有时也可能出现矛盾,机器内部有时也可能出现突发事件突发事件,为此,计算机中,为此,计算机中通常采用中断技术。通常采用中断技术。中断中断 CPU和外设并行工作,当外设数据准备好和外设并行工作,当外设数据准备好( 或有某种突发事或有某种突发事件发生件发生)时向时向CPU提出请求,提出请求,CPU暂停正在执行的程序转而为暂停正在执行的程序转而为该外设服务该外设服务(或处或处 理紧急事件理紧急事件),处理完毕再,处理完毕再回到原断点回到原断点继续继续执行原程序。执行原程序。中断源中断源 引起中断的原因引起中断的原因,中断申请的来源,中断源可以是中断申请的来源,中断源可以是I/O设备、设
5、备、故障、时钟、调试中人为设置故障、时钟、调试中人为设置。中断系统的基本结构 中断优先级中断优先级 当有多个中断源同时当有多个中断源同时 向向CPU申请中断时,申请中断时,CPU优优先响应最需紧急处理的中断请求,处理完毕再响应先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的优先级别较低的 ,这种,这种预先安排的响应次序预先安排的响应次序。 中断的嵌套中断的嵌套 在中断系统中在中断系统中,高优先级的,高优先级的 中断请求能中断正在中断请求能中断正在进行的较低级的中断源处理进行的较低级的中断源处理. MCS51系列单片机上集成有中断系统,从使用者的角度出发,系列单片机上集成有中断系统,从
6、使用者的角度出发,MCS51的的中断系统就是一些中断系统就是一些SFR,如,如IE、IP、TCON、SCON。 INT0定时器定时器1串行口串行口外设外设外设外设0INT10IE0IE1TF0TF1定时器定时器0TCONRITISCONEX0EX1ET0ET1ESIEEAPX001PX101PT001PT101PS01IP0003H000BH0013H001BH0023H0003H000BH0013H001BH0023HPC高高低低中断源中断源中断系统结构图MCS-51中断源中断源 MCS51单片机有单片机有5个中断源。个中断源。5个中断源分为个中断源分为2种:种:2个外中断(由个外中断(由P
7、3.2和和P3.3引入)引入)和和3个内中断(个内中断(T0、T1和串口)。和串口)。每个中断源对应一个中断标志位每个中断源对应一个中断标志位,当某个中断源有,当某个中断源有中中 断请断请求求时,相应的时,相应的中断标志位置中断标志位置1,各个中断源的中断标志位在各个中断源的中断标志位在TCON和和SCON中中。INT0定时器定时器1串行口串行口外设外设外设外设0INT10IE0IE1TF0TF1定时器定时器0TCONRITISCONEX0EX1ET0ET1ESIEEAPX001PX101PT001PT101PS01IP0003H000BH0013H001BH0023H0003H000BH00
8、13H001BH0023HPC高高低低中断源中断源 符号符号 名名 称称 中中 断断 引引 起起 原原 因因 中断服务程中断服务程序入口序入口INT0INT0 外部中断外部中断0 0 P3.2 P3.2引脚的低电平或下降沿信号引脚的低电平或下降沿信号 0003H0003HINT1INT1 外部中断外部中断1 1P3.3P3.3引脚的低电平或下降沿信号引脚的低电平或下降沿信号 0013H0013HT0T0定时器定时器0 0中中断断 定时计数器定时计数器0 0计数回零溢出计数回零溢出 000BH000BHT1T1定时器定时器1 1中中断断 定时计数器定时计数器1 1计数回零溢出计数回零溢出 001
9、BH001BHTI/RI TI/RI 串行口中断串行口中断 串行通信完成一帧数据发送或接收引起串行通信完成一帧数据发送或接收引起中断中断 0023H0023H 8XX51有有5个中断源,个中断源,3个在片内,个在片内,2个在片外,它们在程序存贮器中有固定个在片外,它们在程序存贮器中有固定的中断入口地址,的中断入口地址, 当当CPU响应中断时,硬件自动形成这些地址,由此进入响应中断时,硬件自动形成这些地址,由此进入中断服务程序;中断服务程序;5个中断源有两级中断优先级,可形式中断嵌套个中断源有两级中断优先级,可形式中断嵌套;一)一)中断中断请求标志寄存器请求标志寄存器TCON和和串行口控制寄存器
10、串行口控制寄存器SCON 1 1、MCS51单片机内部的中断检测电路检测到有中断请求后,将检测结果存于TCON、SCON中;每个中断源对应一个中断标志位每个中断源对应一个中断标志位,当某个中断源有中断请求时,相应的中断标志位置1,各个中断源的中断标志位在TCON和SCON中。TCONTCON:88H 88H 可以按字节操作,也可以按位操作。可以按字节操作,也可以按位操作。SCONSCON:98H 98H 可以按字节操作,也可以按位操作。可以按字节操作,也可以按位操作。TF1TR1TF0TR0IE1 IT1 IE0 IT0TIRI中断相关的寄存器中断相关的寄存器其中:其中: TF1 定时器定时器
11、/计数器计数器1(T1)的溢出中断标志。当)的溢出中断标志。当T1从初值开始加从初值开始加1计数到计数满,计数到计数满,产生溢出时,由硬件使产生溢出时,由硬件使TF1置置“1”,并向并向CPU请求中断请求中断。直到。直到CPU响应中断时由硬响应中断时由硬件复位置件复位置0。 TF0 定时器定时器/计数器计数器0(T0)的溢出中断标志。其作用同)的溢出中断标志。其作用同TF1。 IE1 外中断外中断1中断请求标志。如果中断请求标志。如果IT1=1,则当外中断,则当外中断1引脚上的电平由引脚上的电平由1变变0时,时,IE1由硬件置位,由硬件置位,外中断外中断1请求中断请求中断。在。在CPU响应该中
12、断时由硬件清响应该中断时由硬件清0。 IT1 外部中断外部中断1触发方式控制位。如果触发方式控制位。如果IT1为为1,则外中断,则外中断1为下降沿触发方式为下降沿触发方式(CPU在每个机器周期的在每个机器周期的S5P2采样采样脚脚的输入电平,如果在一个周期中采样到高电平,的输入电平,如果在一个周期中采样到高电平,在下个周期中采样到低电平,则硬件使在下个周期中采样到低电平,则硬件使IE1置置1,向,向CPU请求中断);如果请求中断);如果IT1为为0,则外中断则外中断1为低电平触发方式。为低电平触发方式。此时外部中断是通过检测端的输入电平(低电平)此时外部中断是通过检测端的输入电平(低电平)来触
13、发的。来触发的。采用电平触发时,输入到的外部中断源必须保持低电平有效采用电平触发时,输入到的外部中断源必须保持低电平有效,直到该中直到该中断被响应。同时在中断返回前必须使电平变高,否则将会再次产生中断。断被响应。同时在中断返回前必须使电平变高,否则将会再次产生中断。 IE0 外中断外中断0中断请求标志。如果中断请求标志。如果IT0置置1,则当上的电平由,则当上的电平由1变变0时,时,IE0由硬件置位。由硬件置位。在在CPU把控制转到中断服务程序时由硬件使把控制转到中断服务程序时由硬件使IE0复位。复位。 IT0 外部中断源外部中断源0触发方式控制位。其含义同触发方式控制位。其含义同IT1。TF
14、1TF0IE1IT1IE0IT0TCON2 2、在每条指令结束时,在每条指令结束时,CPUCPU检测各个中断标志位,若中断标志位置检测各个中断标志位,若中断标志位置1 1,则认为有,则认为有中断请求。中断请求。3 3、外中断有、外中断有2 2种触发方式:种触发方式:低电平和下降沿低电平和下降沿,由,由TCONTCON中的中的ITIT0 0和和 ITIT1 1决定。决定。 当当IT0=1IT0=1,INT0INT0为脉冲方式,后沿负跳变有效;当为脉冲方式,后沿负跳变有效;当IT0=0IT0=0,低电平有效。此位,低电平有效。此位,可由软件置可由软件置1 1或清或清0 0。 当当IT1=1IT1=
15、1,INT1INT1为脉冲方式,后沿负跳变有效;当为脉冲方式,后沿负跳变有效;当IT1=0IT1=0,低电平有效。此位,低电平有效。此位可由软件置可由软件置1 1或清或清0 0。(3)TR0 和和 TR1 为定时器为定时器T0和和T1 工作启动和停止控制。工作启动和停止控制。 TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 请求请求有有/无无 T1工作工作启启/停停 T0 请求请求有有/无无 T0 工作工作启启/停停 INT1 请求请求有有/无无 INT1方式方式下沿下沿/ 低低电平电平 INT0请求请求有有/无无 INT0方式方式下沿下沿/低低电平电平 串行口控制寄存器串行口控
16、制寄存器SCON串行口控制寄存器SCON中的低2位用作串行口中断标志,如下图所示。 D7 D6 D5 D4 D3 D2 D1 D0其中: RI 串行口接收中断标志。在串行口接收一个字符后,由内部硬件使接收中断请求标志位RI置位,表示串行口接收器正向CPU请求中断。注意,当CPU转入串行口中断服务程序入口时不复位RI,必须由用户用软件来使RI清0。 TI 串行口发送中断标志。当串行口发送完一个字符后,由内部硬件使发送中断标志TI置位,表示串行口正在向CPU请求中断。当CPU响应中断,转向串行口中断服务时,也不能硬件自动清零,必须由软件来复位。TI RI 二)二)中断开放与中断允许控制寄存器中断开
17、放与中断允许控制寄存器 IE MCS-51单片机的5个中断源,用户都可以通过软件方法来控制是否允许用户都可以通过软件方法来控制是否允许CPUCPU去去响应中断响应中断。CPU对中断源的中断允许或中断禁止的控制是通过中断允许控制寄存中断允许控制寄存器器IE来实现的。 IEIE:A8H A8H 可以按字节操作,也可以按位操作。可以按字节操作,也可以按位操作。 EA: 当EA=0时, 称CPU关中断。当EA=1时,称CPU开中断。 EX0:当EX0=0时,禁止INT0 申请中断;当EX0=1时,允许INT0 申请中断。 EX1:当EX1=0时,禁止INT1申请中断;当EX1=1时,允许INT1申请中
18、断。 ET0:当ET0=0时, 禁止T0中断;当ET0=1时,允许T0中断。 ET1:当ET1=0时, 禁止T1中断;当ET1=1时,允许T1中断。 ES: 当ES=0时, 禁止串行口中断;当ES=1时,允许串行口中断 EX0ET0EX1ET1ESEA中断开放与中断允许控制寄存器中断开放与中断允许控制寄存器 IE复位后复位后IE=00H,说明,说明CPU和各个中断源都关中断。和各个中断源都关中断。注意:注意:,因此,如果在转入中断服务处理程,因此,如果在转入中断服务处理程序后,如果想禁止更高级的中断源的中断申请,可以序后,如果想禁止更高级的中断源的中断申请,可以用软件方式关闭中断用软件方式关闭
19、中断。例如:例如:假定要开放外中断假定要开放外中断1 1和和T1T1的溢出中断,屏蔽其他中断,则对应的中断允许的溢出中断,屏蔽其他中断,则对应的中断允许控制寄存器内容应为控制寄存器内容应为10001100B10001100B,即中断允许控制字为,即中断允许控制字为8CH8CH。使用字节操作指令,可用一条指令使用字节操作指令,可用一条指令MOV IEMOV IE,8CH8CH完成。完成。使用位操作指令,则需三条指令使用位操作指令,则需三条指令SETB EX1SETB EX1;SETB ET1SETB ET1;SETB EASETB EA实现。实现。三)三) 中断优先级与中断优先级寄存器中断优先级
20、与中断优先级寄存器 IP MCS-51单片机的中断系统对优先级的控制比较简单,只规定了两个中断优先只规定了两个中断优先级级,对于每一个中断源均可编程为高优先级中断高优先级中断或低优先级中断低优先级中断,各中断源的优先级由中断优先级控制寄存器IP设定。 IP IP:B8H B8H 可以按字节操作,也可以按位操作。可以按字节操作,也可以按位操作。 PX0 PX0:当PX0=0时,INT0 处于低级;当PX0=1时,INT0 处于高级。 PX1PX1:当PX1=0时,INT1 处于低级;当PX1=1时,INT1 处于高级。 PT0PT0:当PT0=0时,T0 处于低级;当PT0=1时,T0 处于高级
21、。 PT1PT1:当PT1=0时,T1 处于低级;当PT1=1时,T1处于高级 PSPS: 当PS=0时, 串行口处于低级;当PX0=1时,串行口处于高级。 PX0PT0PX1PT1PS 复位后复位后IP=00HIP=00H,说明,说明各个中断源都处于低级。各个中断源都处于低级。注意:注意:1 1、当五个中断源在同一个优先级的情况下INT0优先权最高,串行口优先权最低。在同一个优先级中,对五个中断源的优先次序安排如下: INT0T0INT1T1 INT0T0INT1T1串口串口 (中断优先级从高到低)(中断优先级从高到低)2、对于外中断来说,可以用软件查询法软件查询法和硬件排队电路法硬件排队电
22、路法确定优先级。3、通过对IP寄存器的编程,可以把五个中断源分别定义在两个优先级中,软件可以随时对IP的各位清0或置1。例如例如 某软件中对寄存器IE、IP设置如下:MOV IE,10001111B MOV IP,00000110B 此时该系统中:CPU中断允许;允许外部中断0、外部中断1、定时/计数器0、定时/计数器1发出的中断申请。允许中断源的中断优先次序为:定时/计数器0外部中断1外部中断0定时/计数器1。MCS-51中断系统图示自然优先级矢量地址自然优先级矢量地址高级中断请求PCPC断请求低级中SCON中断标志IPPX01PT0110PX110PS100PT10IEEX0ET0EX1E
23、T1ESTCONIE0TF0IE1TF1TIRIRXTXT1IT1=1INT1IT1=0T0INT0IT0=1IT0=0源允许总允许优先级硬件查询EA 4.2.2 MCS-51中断处理全过程中断处理全过程 4.2.2 MCS-51中断处理全过程中断处理全过程1、中断请求、中断请求 MCS51单片机单片机内部的中断检测电路内部的中断检测电路检测各个中断源检测各个中断源,检测到有中断,检测到有中断申申请后,将相应的请后,将相应的中断标志位置中断标志位置1。 CPU在在时,检测各个中断标志位,若中断标志位置时,检测各个中断标志位,若中断标志位置1,则认,则认为有中断请求。为有中断请求。 CPU读取读
24、取IE和和IP的内容的内容,若中断允许且满足如下,若中断允许且满足如下条件条件,则在下一个机器,则在下一个机器周期进入中断响应阶段。周期进入中断响应阶段。 没有同级或更高级的中断正在执行(否则必须等没有同级或更高级的中断正在执行(否则必须等CPU为它们服务完之后,为它们服务完之后,才能响应新中断请求。)才能响应新中断请求。)执行完的指令不是执行完的指令不是RETI或访问或访问IE和和IP的指令(否则必须另外执行一条指的指令(否则必须另外执行一条指令后才能响应令后才能响应。) 当前执行的指令已经执行完。当前执行的指令已经执行完。 4.2.2 MCS-51中断处理全过程中断处理全过程2、中断响应、
25、中断响应 在中断响应阶段单片机做2件工作: 断点地址压栈。断点地址压栈。 根据不同的中断源,将不同的固定地址送根据不同的中断源,将不同的固定地址送PC,从而转到不同的地方执行程,从而转到不同的地方执行程序。序。 各个中断源的入口地址是:各个中断源的入口地址是:0003H、000BH、0013H、001BH、0023H。 INT0 T0 INT1 T1 串行口串行口3、中断服务、中断服务 CPU响应中断后即转至中断服务程序的入口,执行中断服务程序。针对中断源的具体要求进行不同处理,不同的中断源其中断处理内容可能不同。4、中断返回、中断返回 中断服务(子)程序的最后一条指令是中断服务(子)程序的最
26、后一条指令是RETI,RETI指令使程序返回被中断指令使程序返回被中断的(主)程序继续执行。的(主)程序继续执行。 CPU执行该指令,一方面清除中断响应时所置位的优先级有效触发器;另一方面从堆栈栈顶弹出断点地址送入程序计数器从堆栈栈顶弹出断点地址送入程序计数器PC,从而返回主程序。,从而返回主程序。对电平触发的外部中断,对电平触发的外部中断,CPU在响应中断时也不会自动清在响应中断时也不会自动清除中断标志,因此,在除中断标志,因此,在CPU响应中断后应立即撤除响应中断后应立即撤除INT1或或INT0的低电平信号的低电平信号。 对定时计数器对定时计数器T0、T1的溢出中断,的溢出中断,CPU响应
27、中断后,硬响应中断后,硬件自动清除中断请求标志件自动清除中断请求标志TF0和和TF1。 对边沿触发的外部中断对边沿触发的外部中断INT1和和INT0,CPU响应中断后硬件自动清除中断请求标志响应中断后硬件自动清除中断请求标志IE0和和IE1。 对于串行口中断,对于串行口中断,CPU响应中断后,没有用硬件清除中断响应中断后,没有用硬件清除中断请求标志请求标志TI、RI,即这些中断标志,即这些中断标志 不会自动清除不会自动清除,必须用软件,必须用软件清除,这是在编串行通信中断服务中应该注意的。清除,这是在编串行通信中断服务中应该注意的。5、中断撤除、中断撤除MCS-51中断系统的初始化中断系统的初
28、始化 MCS-51中断系统功能,是可以通过上述特殊功能寄存器统一管理的,中断系统初始化是指用户对这些特殊功能寄存器中的各控制位进行赋值。中断系统初始化中断系统初始化中断系统初始化步骤如下: 开相应中断源的中断; 设定所用中断源的中断优先级; 若为外部中断,则应规定低电平还是负边沿的中断触发方式。MCS-51中断系统的应用中断系统的应用中断系统初始化中断系统初始化例: 请写出为低电平触发的中断系统初始化程序。解:采用位操作指令 SETB EASETB EX1 ;开中断SETB PX1 ;令为高优先级CLR IT1 ;令为电平触发 采用字节型指令MOV IE,#84H ;开中断ORL IP,#04
29、H ;令为高优先级ANL TCON,#0FBH ;令为电平触发例1:若规定外部中断0为电平触发方式,高优先级,试写出有关的初始化程序。 解:一般可采用位操作指令来实现: SETB EA ;开中断 SETB EX0 ;允许外中断0中断 SETB PX0 ;外中断0定为高优先级CLR IT0 ;电平触发中断系统初始化中断系统初始化外部中断设定的步骤外部中断设定的步骤: ORG 03H(13H) ( )外部中断的起始地址 JMP EXT 中断时跳至中断子程序EXT MOV IE,#10000001BH 中断使能 MOV IE,#10000100BH 中断使能 MOV IP,#00000001BH 中
30、断优先 MOV IP,#00000100BH 中断优先 MOV TCON,#00000000B(设定 为电平触发) MOV TCON,#00000001B(设定 为负边沿触发) MOV TCON,#00000000B(设定 为电平触发) MOV TCON,#00000100B(设定 为负边沿触发)0INT0INT0INT0INT0INT 1INT 1INT 1INT 1INT 1INT 中断系统初始化中断系统初始化TIMER0或或TIMER1的中断请求的中断请求 当计数溢出时会设定TFX=1,而对8051提出中断请求。TIMER0或TIMER1中断请求设定的步骤如下: 定中断起始地址 ORG
31、0BH ;TIMER0 ORG 1BH ;TIMER1 定工作方式 MOV TMOD ,#XXXXXXXXB设定计数值 MOV THX,#XXXX MOV TLX,#XXXX设定中断使能 MOV IE,#1000X0X0中断的程序设计中断的程序设计 用户对中断的控制和管理,实际是对用户对中断的控制和管理,实际是对4个与中断有关的寄个与中断有关的寄存器存器IE、TCON、IP、SCON进行控制进行控制 或管理或管理。这几个寄存。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关存器的有关 位进行预置。在中断程序的编制中应注
32、意:位进行预置。在中断程序的编制中应注意:开中断总控开关EA,置位中断源的中断允许位。对外部中断INT0、INT1应选择中断触发方式。编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息。多个中断源中断,应设定中断优先级,预置IP。 若要在执行当前中断程序时禁止更高优先级中断,可以采 用软件关CPU中断或禁止某中断源中断,在中断返回前再开放中断。C51中断程序的编制 C51C51使用户能编写高效的中断服务程序,编译器在规定的中断源的矢使用户能编写高效的中断服务程序,编译器在规定的中断源的矢量地址中放入无条件转移指令,使量地址中放入无条件转移指令,使CPUC
33、PU响应中断后自动地从矢量地址跳转响应中断后自动地从矢量地址跳转到中断服务程序的实际地址,而无需用户去安排。到中断服务程序的实际地址,而无需用户去安排。中断服务程序定义为函数,函数的完整定义如下。中断服务程序定义为函数,函数的完整定义如下。返回值返回值 函数名函数名( (参数参数) )模式再入模式再入interrupt ninterrupt nusing musing m 其中必选项其中必选项 interrupt ninterrupt n表示将函数声明为中断服务函数,表示将函数声明为中断服务函数,n n为中断源为中断源编号,可以是编号,可以是0 03131间的整数间的整数 ,不允许是带运算符的
34、表达式,不允许是带运算符的表达式,n n通常取以通常取以下值:下值:0 0 外部中断外部中断0 0;1 1 定时器定时器/ /计数器计数器0 0溢出中断溢出中断2 2 外部中断外部中断1 1;3 3 定时器定时器/ /计数器计数器1 1溢出中断溢出中断4 4 串行口发送与接收中断串行口发送与接收中断5 5 定时器定时器/ /计数器计数器2 2中断中断 各可选项的意义如下:各可选项的意义如下:using musing m 定义函数使用的工作寄存器组,定义函数使用的工作寄存器组,m m的取值范围为的取值范围为0 03 3,可缺,可缺省。它对目标代码的影响是:函数入口处将当前寄存器保存,使用省。它对
35、目标代码的影响是:函数入口处将当前寄存器保存,使用 m m 指定的寄存器组,函数退出时指定的寄存器组,函数退出时 原寄存器组恢复。选不同的工作原寄存器组恢复。选不同的工作寄存器组,可方便实现寄存器组的现场保护。寄存器组,可方便实现寄存器组的现场保护。再入再入属性关键字属性关键字reentrantreentrant将函数定义为再入的,在将函数定义为再入的,在C51C51中,普通中,普通函数函数( (非再入的非再入的) )不能递归调用,不能递归调用, 只有再入函数才可被递归调用。只有再入函数才可被递归调用。中断服务函数不允许用于外部函数,它对目标代码影响如下:中断服务函数不允许用于外部函数,它对目
36、标代码影响如下:当调用函数时,当调用函数时,SFRSFR中的中的ACCACC、B B、DPHDPH、DPLDPL和和PSWPSW当需要时入栈。当需要时入栈。如果不使用寄存器组切换,中断函数所需的所有工作寄存器如果不使用寄存器组切换,中断函数所需的所有工作寄存器RnRn都入都入栈。栈。函数退出前,所有工作寄存器都出栈。函数退出前,所有工作寄存器都出栈。函数由函数由“RETIRETI”指令终止。指令终止。下面示例说明下面示例说明C C语言的编程方法。语言的编程方法。 例例 要求每中断一次,发光二极管显示开关状态要求每中断一次,发光二极管显示开关状态 用用C C语言编程语言编程 #include#i
37、nclude int0() interrupt 0 / int0() interrupt 0 /* *INT0INT0中断函数中断函数* */ / P1=0 x0f; /P1=0 x0f; /* *输入端先置输入端先置1 1,灯灭,灯灭* */ / P1=4; / P1=4; /* * 读入开关状态,并左移四位,读入开关状态,并左移四位, 使开关反映在发光二极管上使开关反映在发光二极管上* */ / main()main() EA=1; /EA=1; /* *开中断总开关开中断总开关* */ /EX0=1; /EX0=1; /* *允许允许INT0INT0中断中断* */ / IT0=1; /
38、IT0=1; /* *下降沿产生中断下降沿产生中断* */ /while(1); /while(1); /* *等待中断等待中断* */ / &+5V+5VP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.789C51EA&INT011111K 41K 2300 4图6. 每个中断源有固定的中断服务程序的入口地址每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地址称矢量地址或向量地址)。当。当CPU响应中断以响应中断以 后单后单片机内部硬件保证它能自动的跳转到该地址。片机内部硬件保证它能自动的跳转到该地址。因此,因此,此地址是应该熟记的此地址是应该熟记的,在汇编程序,在汇
39、编程序 中,中断服务程中,中断服务程序应存放在正确的向量地址内。序应存放在正确的向量地址内。 (或存放一条转移指令或存放一条转移指令);而在;而在C语言中是靠语言中是靠Interrupt n的关键字的关键字n自动设置的。自动设置的。 小小 结结(1)中断技术是实时控制中的常用技术,)中断技术是实时控制中的常用技术,51系列单片机有三系列单片机有三个内部中断,二个外部中断。所谓个内部中断,二个外部中断。所谓 外部中断就是在外部引脚外部中断就是在外部引脚上有产生中断所需要的信号。上有产生中断所需要的信号。(2)单片机的中断是靠内部的寄存器管理的单片机的中断是靠内部的寄存器管理的,这就,这就是是中断
40、允许寄存器中断允许寄存器IE,中断优先权寄存器,中断优先权寄存器IP ,必,必须在须在CPU开中断即开全局中断开关开中断即开全局中断开关EA,开各中断,开各中断源的中断开关源的中断开关,CPU才能响应该中断源的才能响应该中断源的 中断请中断请求,其中缺一不可。求,其中缺一不可。 (3)从程序表面看来,主程序和中断服务程序好象)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,是没有关连的,只有掌握中断响应的过程, 才能才能理解中断的发生和返回,看得懂中断程序,并能编理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。写高质量中断程序。 (4)本章重点应掌握
41、中断的基本概念,并能熟练编)本章重点应掌握中断的基本概念,并能熟练编制中断程序。制中断程序。1、在中断服务程序中,至少应有一条( )。A、 传送指令 B、 转移指令 C、 加法指令 D、 中断返回指令2、要使MCS-51能够响应定时器T1中断,串行接口中断,它的中断允许寄存器IE的内容应是( )。 A、 98H B、 84H C、 42H D、 22H3、MCS-51中断源有( ) A、 5个 B、 2个 C、 3个 D、 6个4、计算机在使用中断方式与外界交换信息时,保护现场的工作应该是( ) A、 由CPU自动完成 B、 在中断响应中完成 C、 应由中断服务程序完成 D、 在主程序中完成5
42、、MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是( )。 A、 INT0,INT1 B、 T0,T1 C、 T1,串行接口 D、 INT0,T0课堂练习6、若MCS-51中断源都编程为同级,当它们同时申请中断时,CPU首先响应( )。 A、 INT1 B、 INT0 C、 T1 D、 T07、当CPU响应串行接口中断时,程序应转到( )。 A、 0003H B、 0013H C、 0023H D、 0033H8、执行MOV IE,#03H后,MCS-51将响应的中断是( )。 A、 1个 B、 2个 C、 3个 D、 0个9、外部中断1固定对应的中断入口地址为( )。 A、 0003H B、 000BH C、 0013H D、 001BH10、MCS-51单片机可分为两个中断优先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论