系统中断优先级Word格式文档下载.docx
《系统中断优先级Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《系统中断优先级Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
51-MCSduetoprovideonly"
secondaryinterruption,expandnested"
51systemofpuresoftwareinterruptpriority.Theuseofthebuilt-in51systemallowsregisterinterruptandinterruptpriorityIEIP,throughtheshieldwordregistersmechanismtorealize,IntheformofC51extensionmethodsforrealizingthefunctionoflibrary,theuseofthismethodgivesfriendlyuserinterface,concise.
Asisknowntoall,51-MCSprovideonly"
2"
andinterruptnestedmostembeddedsystemismorethantwoleveltoprioritylevel.Becauseingeneral,systemshavepowertobeinterrupted,andthehighestpriority,sothatalltheotherinterruptscansharealowestpriority,so,oftencannotmeetthepracticalneedsoflogic.Inordertomakethesystemhasmorethantwolevelsofinterruptprioritylevel,canuse8259Ainterruptcontrolchiprealizationofhardwareinterruptpriority,butincreasedthecostofsystemandcomplexity.Becauseofthecomplexityofimprovingthereliabilityofthesystemwillbeaffected.ThispaperproposesakindofexpansionMCS-51systemsoftwareinterruptprioritymethodsofpure,donotneedtoaddanyadditionalhardware,andresourceconsumptionissmall.Actualapplicationshowsthatthismethodisfeasibleandeffective.
Keywords:
MCS-51SCM、interruptpriority、softextension、C51
目录
第一章MCS-51单片机介绍及中断系统简介1
第一节MCS-51单片机介绍1
第二节中断系统简介1
第二章中断优先级软扩展的方法3
第一节方法一3
第二节方法二6
第三节方法三6
第三章优先级软扩展的函数库实现7
结束语11
谢辞12
参考文献13
第一章MCS-51单片机介绍及中断系统简介
第一节MCS-51单片机介绍
MCS-51单片机是指由美国INTEL公司(大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
第二节中断系统简介
中断的意义是为了实现实时控制,系统工作时,必须对内部、外部的各种紧急情况做及时处理,如用户不可预知时间的按键操作、受控对象参数的改变(温度、转速超标)、系统工作电压下降等。
中断系统为每个产生该信息的对象(中断源)分配了一个标志位,并配备相应的检测控制体系。
当出现上述情况时,系统根据标志位的不同,控制程序转去执行相应的处理程序(中断处理程序),以实现及时反应的外在表现。
否则,这些紧急情况的处理程序都必须编制到主程序中,且并不能保证得到及时处理。
可见,中断系统,是解决实时问题的有力保障。
MCS-5系列单片机允许有五个中断源,提供两个中断优先级,可实现二级中断嵌套。
这两级优先级遵循下述规则:
仅高优先级中断源可中断嵌套低优先级中断源。
为实现这一规则,中断系统内部包含两个不可寻址的优先级状态触发器。
当特定优先级的某中断源被响应时,相应的触发器即被置位,直到执行了RETI指令后,这个触发器才复位。
在此期间,同级和低级中断将被防止。
中断源的中断请求能否得到响应,受中断允许寄存器IE的控制。
每个中断源的优先级可通过对中断优先级寄存器IP编程来设定:
或最低,或最高。
同一优先级中的各中断源同时请求中断时,由内部查询逻辑确定响应次序。
查询次序依次为:
外部中断0(X0)、定时器中断0(T0)、外部中断1(X1)、定时器中断1(T1)、串口中断(S)。
如果当前指令是RETI或是对IE、IP操作的指令,将封装CPU对中断的响应,且必须再执行完一条指令之后才会响应中断。
中断处理过程包含:
中断请求、中断响应、中断服务、中断返回四个阶段.
①中断请求:
中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询。
②中断响应:
在一条指令的最后一个周期按优先级顺序查询中断标志,为“1”并满足响应条件时响应。
响应操作:
断点压栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC。
实际上响应中断的主要操作是有硬件自动产生一条长调用指令LCALL。
③中断服务:
根据入口地址转中断服务程序,保护现场、执行中断主体、恢复现场。
④中断返回:
断点出栈→开放中断允许→返回原程序。
第二章中断优先级软扩展的方法
首先,给出软扩展的第一种方法,并分析其特点,指出其存在的缺陷。
然后,基于对方法一的不足之处,给出不断完善的方法二、方法三。
其中方法二是对方法一的完善,方法三是对方法二的完善,并最终解决了方法一、二中的缺陷,实现了真正的中断优先级的软扩展。
第一节方法一
此法仅使用和系统的中断允许寄存器IE,通过中断屏蔽字机制,以使不同的中断源具有不同的逻辑中断优先级(下文中的“优先级”如不加说明即指“逻辑中断优先级”)。
不失一般性,不妨令8051系统的五个中断源——外中断0(X0)、定时器中断0(T0)、外中断1(X1)、定时器中断1(T1)及串口中断(S),有如表2-1-1所列的优先级。
(实际应用中,视具体情况,赋予不同中断源以适当的优先级。
)
其中,“0”代表最高优先级,“4”代表最低优先级。
其次,给设定了优先级的各中断源分配适当的“中断屏蔽字”。
其基本思想是屏蔽同级和低级中断。
具体分配过程如下:
优先级为k(0≤k≤N-1,N为中断源数量)的中断源的“中断屏蔽字”为:
优先级为x(x∈[k,N-1],即同级和低级)的中断源在IE中的对应位置0,优先级为y(y∈[0,k-1],即高级)的中断源在IE中的相应位置1而得的位组字节。
当然,IE的EA位(CPU中断允许标志位)始终为1.
对于表2-1-1所列的中断优先级分配情况,各中断源的“中断屏蔽字”配置如表2-2-1所列。
表2-1中断源的优先级分配表
中断源
X1
T1
T0
S
X0
优先级
1
2
3
4
最后,给各中断源的ISR(InterruptRoutine,中断服务例程)加以如下所示的外壳(Assembly形式的)。
不妨以定时器0(T0)为例:
CSEGAT8×
1+3;
定义绝对段,设置断向量
JMPT0_ISR_SHELL
?
PR?
TO_ISR_SHELL?
XXSEGMENTCODE;
声明再定位段
T0_ISR_SHELL:
PUSHIE;
保存IE
MOVIE,#TO_INT_MASK;
设置当前中断屏蔽字
CALLResetIntSys:
复位中断系统
CALLT0_ISR:
调用中断服务例程的主体
POPIE;
恢复IE
RET
表2-2中断源的中断屏蔽字配置表
这里,T0_ISR为定时器0(T0)的ISR的主体部分。
其应以一般函数的形式,用汇编或C编写。
ResetIntSys为仅含一条中断返回指令(IRET)的函数,即ResetIntSys:
RETI。
其用于复位中断系统,以使在相应ISR执行过程中,系统仍可响应其它中端源提出的中断请求,以便实现中断嵌套。
这样就达到了防止同级和低级优先级中断的目的。
高优先级的中断源可以提出中断请求,但未必会被立即响应。
因为在当前策略下,尚不能实现真正的“中断嵌套”(即高优先级的中断服务例程可中断低优先级的中断服务例程而嵌套执行),而仅有最高优先级的中断(X1)才可以实现这种真正的“中断嵌套”。
因为在8051系统里,中断能否嵌套仅取决于其相应的“物理中断优先级”(各中断源的物理中断优先级由中断优先级寄存器IP中的相应位决定,且仅有二级)。
下面分三种情况说明方法一的特点和不足:
①当外部中断1(X1,其具有最高的逻辑中断优先级和最高的物理中断优先级)提出中断请求时,系统将立即响应,而不管系统此时忙否。
如果此时系统正在执行其它中断的ISR,X1的ISR将以嵌套形式执行,因为其它中断湖泊的物理中断优先级都为最低(51系统仅有两级物理优先级:
最高或最低)。
②当定时器0(T0,其优先级为2)的中断请求正被响应时,来自串口(S,其优先级为3)和外部中断0(X0,其优先级为4)的中断请求将被禁止;
而只允许外部中断1(X1,其优先级为0)和定时器1(T1,其优先级为1)提出中断请求。
如果是X1提出中断请求,则X1的ISR将立即嵌套执行;
如果是T1提出,尽管其优先级高于当前中断T0,但因其物理中断优先级与T0一样(同为最低),故而将不会像X1那样被系统立即响应,并嵌套执行,而只能等待,直到T0的中断服务例程执行完毕。
③如果在串口(S