第八章 中断系统

8.1  80C51的中断系统

一、中断的概念

        计算机具有实时处理能力,能对外界发生的事件进行及时处理,这是依靠它们的中断系统来实现的。

      CPU 在处理某一事件 A 时,发生了另一事件 B 请求 CPU 迅速去处理( 中断发生或中断请求 );
      CPU 暂时中断当前的工作,转去处理事件 B 中断响应和中断服务 );
       CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A 中断返回 )。

 

         引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。

    随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:

        分时操作 CPU 可以分时为多个 I/O 设备服务, 提高了计算机的利用率
        实时响应 CPU 能够 及时处理 应用系统的随机事件,系统的实时性大大 增强;
        可靠性高 CPU 具有处理设备故障及掉电等突发性事件的能力,从而使系 可靠性提高

 二、80C51中断系统的结构

        80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套 。

     与中断系统工作有关的特殊功能寄存器有中断允许控制寄存器 IE,中断优先级控制寄存器IP以及定时器/计数器控制寄存器TCON.

8.2、 80C51的中断源

 一、中断源

1、外部中断0、1

        输入/输出设备的中断请求,掉电、设备故障的中断请求等都可以作为外部中断,从引脚输入。有两种触发方式:电平触发(TCON 的IT0和IT1=0)和跳变触发(TCON 的IT0和IT1=1)。

        (P3.2)。可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)1,向CPU申请中断。引脚上的高电平与低电平至少应各自保持1个机器周期。

        (P3.3)。可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)1,CPU申请中断。

2、 定时器/计数器0、1溢出中断

        TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置1位TF0,并向CPU申请中断。 CPU响应中断后,由硬件自动清除TF0TF1

        TF1TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置1位TF1,并向CPU申请中断。

3、串行接口中断

        RI(SCON.0)或TISCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI=1或当串行口发送完一帧串行数据时置位TI=1,向CPU申请中断。

 二、中断请求标志(书上没有)

1TCON的中断标志  

IT0TCON.0,外部中断0触发方式控制位。

IT0=0时,为电平触发方式。

IT0=1时,为边沿触发方式(下降沿有效)。

IE0TCON.1,外部中断0中断请求标志位。

IT1TCON.2,外部中断1触发方式控制位。

IE1TCON.3,外部中断1中断请求标志位。

TF0TCON.5,定时/计数器T0溢出中断请求标志位。

TF1TCON.7,定时/计数器T1溢出中断请求标志位。      

2SCON的中断标志

        RI( SCON.0 串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位 RI 。同样, RI 必须由软件清除。
        TI( SCON.1 串行口发送中断标志位。当 CPU 将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位 TI CPU 响应中断时,不能自动清除 TI TI 必须由软件清除。       

 8.3  80C51中断的控制

一、中断允许控制

     CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

 

                                                        1:允许    0:禁止

 EX0(IE.0) ,外部中断 0 允许位;
  ET0(IE.1) ,定时 / 计数器 T0 中断允许位;
  EX1(IE.2) ,外部中断 1 允许位;
  ET1(IE.3) ,定时 / 计数器 T1 中断允许位;
  ES IE.4) ,串行口中断允许位;
  EA (IE.7) CPU 中断允许(总允许)位。

 二、中断优先权选择

1、硬件优先

        硬件优先——单片机内部有一个默认的中断优先级顺序6个优先级)

2、软件控制优先

        80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的

 1:优先      0:滞后

PX0 IP.0 ),外部中断 0 优先级设定位;
PT0 IP.1 ),定时 / 计数器 T0 优先级设定位;
PX1 IP.2 ),外部中断 1 优先级设定位;
PT1 IP.3 ),定时 / 计数器 T1 优先级设定位;
PS IP.4 ),串行口优先级设定位。

         同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

80C51单片机的中断优先级有三条原则:

  CPU 同时接收到几个中断时,首先响应优先级别最高的中断请求。
  正在进行的中断过程 不能被新的同级或低优先级 的中断请求所中断。
  正在进行的 低优先级中断服务,能被高优先级中断请求所中断
        为了实现上述后两条原则, 中断系统内部设有两个用户不能寻址的优先级状态触发器 其中一个置 1 ,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置 1 ,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求

 8.4   80C51单片机中断处理过程

一、中断响应条件

   CPU响应中断的条件是:

  中断源有中断请求;
  此中断源的中断允许位为 1
  CPU 开中断(即 EA=1 )。  

   同时满足时,CPU才有可能响应中断。

        CPU执行程序过程中,在每个机器周期的S5P2期间,中断系统对各个中断源进行采样。这些采样值在下一个机器周期内按优先级和内部顺序被依次询。

         如果某个中断标志在上一个机器周期的S5P2时被置成了1,那么它将于现在的查询周期中及时被发现。接着CPU便执行一条由中断系统提供的硬件LCALL指令,转向被称作中断向量的特定地址单元,进入相应的中断服务程序。

    但即使当MCS-51CPU在每个机器周期的S5P2期间顺序采样各中断请求标志位,如有置位,且下列三种情况都不存在,那么,在下一周期的S1期间响应中断。否则,采样的结果被取消,不产生LCALL指令

  CPU 正在处理同级或高 优先级中断;
  现在 的机器周期 不是所执行指令的最后一个机器周期 。即在完成所执行指令前,不会响应中断,从而保证指令在执行过程中不被打断;
  正在执行 的指令为 RET RETI 或任何访问 IE IP 寄存器的指令。即只有在这些指令后面至少再执行一条指令时才能接受中断请求。

CPU响应中断后,由硬件执行如下功能

    (1)根据中断请求源的优先级高低,使相应的优先级状态触发器置1,

    2保留断点,即把程序计数器PC的内容推入堆栈保存。

    (3清相应的中断请求标志位IE0IE1TF0TF1

    (4)把被响应的中断服务程序的入口地址送入PC,从而转入相应的中断服务程序。

      中断服务程序的最后一条指令必须是中断返回指令RETI

 三、中断响应

中断地址入口: 

中断返回

RETI指令的具体功能是:

Ø 将中断响应时压入堆栈保存的 断点地址从栈顶弹出送回 PC CPU 从原来中断的地方继续执行程序;
Ø 将相应中断优先级状态触发器清 0 ,通知中断系统, 中断服务程序已执行完毕

   注意,不能用RET指令代替RETI指令。在中断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确返回断点  。

 四、中断请求的撤除

    CPU响应中断请求后,在中断返回(执行RETI)前,必须撤除请求,否则会错误地再一次引起中断过程

   (1)对于定时器/计数器01的中断请求及跳变触发方式的外部中断01CPU在响应中断后用硬件清除了相应的中断请求标志TF0TF1IE0IE1,即自动撤除了中断请求

   (2)对于串行接口中断及定时器/计数器2中断,CPU响应中必须由用户编制的中断服务程序来清除相应的中断标志(软件清除)。

   (3)对于电平触发的外部中断,需要外接电路来撤除中断请求信号。

     电平触发方式适合于外部中断输入以低电平输入且中断服务程序能清除外部中断请求源的情况。例如,并行接口芯片8255的中断请求线在接受读或写操作后即被复位,因此,以其去请求电平触发方式的中断比较方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值