51单片机系列知识6--中断系统(1)

来源:互联网 发布:godaddy域名注册 编辑:程序博客网 时间:2024/06/05 00:19

中断系统

一、

几个概念

① 中断:教材p51

② 中断源:产生中断的请求源

③ 中断级:根据中断源(所发出的时时事件)的轻重缓急,规定的优先级别

④ 中断嵌套:CPU在处理一个中断源请求时候,响应了更高一级中断的请求,待处理完后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。

⑤ 中断系统:实现中断功能的部件。

⑥ 多级中断系统:能够实现中断嵌套的中断系统。

1、 中断源

51单片机有5个中断源:2个是INTO、INT1(P3.2、P3.3)上输入的外部中断源;3个内部中断源,定时器∕计数器T0、T1的溢出中断源和串行的发送、接受中断。

这些中断源分别所存在TCON、SCON的相应位中。TF0、TF1、TI∕RI等内部中断源的中断标志。

2、 中断控制

中断控制包括使能控制和优先级控制。对应的特殊功能寄存器分别为IE和IP。

具体阐述见教材p53-54

CPU在接受到同样优先级的几个中断请求源时,一个内部的硬件查询序列确定优先服务于哪一个中断申请

中断源                             中断优先级

外中断0                 

定时器T0中断                         降

外中断1                               低

定时器T1中断

串行口中断

CPU不会在同一时刻接受到几个中断请求(一般不会),通常中断请求源会有一个极短的产生的先后顺序,那么为什么还要提出同一优先级优先服务哪个中断请求源的解决方法了?因为CPU相应中断并不是及时的。

3、 中断响应过程及中断处理

0. 中断处理的过程可归纳为中断请求、中断响应、中断处理及中断返回四部分

从CPU的角度考虑则为:中断查询、中断响应、中断处理、中断返回。

① CPU在每个机器周期顺序检查每一个中断源,在机器周期的S6采样并按优先级处理所有被激活的中断请求,如果没有被下述条件阻止,将在下一个机器周期的状态I(S1)响应激活了的最高级中断请求。

l CPU正在处理相同的或更高优先级的中断;

l 现行的机器周期不是所执行指令的最后一个机器周期;

l 正在窒息感的指令是中断返回指令(RETI)或是对IE、IP的写操作指令(执行这些指令后至少再执行一条指令后才会响应 )

② 中断查询的丢弃:上述条件有一个存在,CPU将会丢弃中断查询结果;若一个都不存在,将在紧接着的下一个机器周期执行中断查询的结果

③ 中断响应的处理:

由硬件完成的工作:置位响应优先级状态触发器→执行一条硬件子程序调用,使控制器转移到相应入口→请“0”中断请求源申请标志(RI∕TI)除外→程序计数的内容压入堆栈(但不保护PSW)→被响应的中断服务程序的入口地址送程序计数器PC→CPU执行中断处理程序一直到RETI指令为止→清“0”响应中断时所置位的优先级状态触发器→从堆栈中弹出顶上的两字节到程序计数器PC→CPU重新执行被中断的程序。

由软件完成的工作:CPU响应中断结束后即转至中断服务程序的入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。不同的中断源服务的内容及要求各不相同,其处理过程也就有所区别。一般情况下,中断处理包括两部分内容:一是保护现场,二是为中断源服务。

关于中断源查询结果的执行与丢弃

RI、TI由软件清零的原因是:

下面接下一页补充

4、 外中断的响应时间

外中断从产生中断请求到开始执行中断服务程序的第一条指令之间,最少需要三个完整的机器周期。原因:

INT0和INT1电平在每个机器周期的S5P2被采样锁存到IE0、IE1中,这个新置入的IE0、IE1状态等到下一个周期才被查询电路查询到。如果中断被激活且满足响应条件,

现场通常有PSW、工作寄存器、专用寄存器。如果在断服务程序中要用到这些寄存器则在进入中断服务之前应将它们的内容保护起来称保护现场,同时在中断结束,执行RET1之前恢复现场。

中断服务程序是针对中断源的具体要求进行处理。

其次,用户应注意以下几点:

a、 各中断源的入口矢量地址之间,只相隔8个单元,一般中断服务程序是容纳不下的,因而最常用的方法是在中断入口矢量地址单元存放一条无条件转移指令,二转至存储器的其他任何空间。

b、 若要执行当前中断程序前,禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放中断。

c、 在保护现场和恢复现场时,为了不使现场信息收到破坏或造成混乱,一般在此情况下应关CPU中断,使CPU暂不响应新的中断请求。这样就要求在编写中断服务程序时,应注意在保护现场之前要关中断,在保护现场后允许高优先级中断打断它,则应开中断。同样在恢复现场之前要关中断,恢复之后再开中断。

 

 

 

 

 

 

CPU接着执行一条硬件程序调用指令以转到相应的服务程序入口,该调用指令本身需要两个机器周期。故至少三个机器周期后才执行中断服务程序。

 

外中断响应:

①CPU在每一个机器周期的S5P2检查1NT0、1NT1电平→

②CPU在每一个机器周期的S6顺序检查中断源,采样并按优先级处理→

③判断中断请求是否被前面所列出的三个条件之一阻止→被阻止则转⑤,没有被阻止则转④

④ CPU执行硬件子程序调用指令→①

⑤ CPU丢弃查询结果,等待CPU下次查询→①

 

△等待时间分析:

对各种请求,在没有阻止时,一般等待三个机器周期。a 若CPU在执行同级或高级中断,额外等待的时间明显取决于别的中断服务程序的处理过程。b 若正在处理的指令没有执行到最后的机器周期,所需的额外等待时间不会多于3个机器周期。c 如果正在执行的指令为RETI或访问IE、IP的指令,额外的等待时间不会多于5个机器周期。

 

△ 是否存在,在某一中断源,进行等待时又有更高级或同级中需优先完成的中断源加入等待,那么先等待执行的中断是否需要等待更长的时间,以上的分析则在该情况下失去意义?因为CPU在每一个机器周期都顺序检查每一个中断源

 

外中断源触发方式的选择


By:霜月孤鸟

2016.2.23

0 0
原创粉丝点击