写在前面:又是一篇超多文字的摘抄。
中断定义:指计算机自动响应一个中断请求信号,暂时停止(中断)当前程序的执行,转而执行为外部设备服务的程序(中断服务程序),并在执行完服务程序后自动返回原程序执行的过程。
单片机中断系统的优点:
- 实现实时处理
- 实现分时操作,提高了MCU效率
- 进行故障处理
- 待机状态的唤醒
中断处理过程
主程序:即MCU处在正常情况下运行的程序
中断源:产生申请中断信号的单元和事件
中断请求信号:由中断源向MCU所发出的申请中断信号
中断响应:MCU接收中断申请停止现行程序的运行而转向为中断服务
中断服务/处理程序:为中断服务的程序
现行程序被打断的地方称为断点,执行完中断处理程序后返回断点处继续执行主程序称为中断返回。这个处理过程称为中断处理过程。
在整个中断处理过程中,由于MCU执行完中断处理程序后仍然需要返回主程序,因此在执行中断处理程序之前,要将主程序中断处的地址,即断点处保存起来,称为保护断点。
断点的保护和恢复操作,是在系统响应中断和执行中断返回指令时由单片机内部硬件自动实现的。即在响应中断时,MCU的硬件系统会自动将断点地址压进系统的堆栈保存;而当执行中断返回指令时,硬件系统又会自动将压入堆栈的断点地址弹出到程序计数器PC中。
中断源、中断信号和中断向量
内部中断源:如定时器溢出中断、ADC完成中断
外部中断源:如作输入/输出设备、控制对象及故障源等。
中断信号是指内部或外部中断源产生的中断申请信号。这个中断信号往往是电信号的某种变化形式,通常有以下几种类型:
- 脉冲的上跳沿或下降沿(上升沿触发型或下降沿触发型)
- 高电平或低电平(电平触发型)
- 电平的变化(状态变化触发型)
中断源发出的请求信号被CPU检测到之后,如果单片机的中断控制系统允许响应中断,则CPU会自动转移,执行一个固定的程序空间地址中的指令。这个固定地址称为中断入口地址,也叫做中断向量。
中断优先级和中断嵌套
中断优先级的概念是针对有多个中断源同时申请中断时,MCU如何响应中断,以及响应中断哪个中断而提出的。
一旦有多个中断请求信号,MCU先响应中断优先级高的中断请求,然后再逐次响应优先级次一级的中断。中断优先级也反映了各个中断源的重要程度,同时也是分析中断嵌套的基础。
中断优先级一般规则:
- 某中断对应的中断向量地址越小,其中断优先级越高(硬件确定方式)
- 通过软件对中断控制寄存器的设定,改变中断的优先级(用户软件可设置方式)
中断嵌套通常的规则:当MCU正处于响应一个中断B的过程中,又产生一个中断A申请时,如果这个新产生的中断A优先级比正在响应的中断B优先级高,则应该暂停当前的中断B的处理,转入响应高优先级的中断A,待高优先级中断A响应处理完成后,再返回原来的中断B的处理;反之B结束后响应A(如果中断A条件还是成立的话)。
中断的屏蔽
在单片机的I/O寄存器中,通常存在一些特殊的标志位用于控制使能或禁止(屏蔽)MCU对中断响应处理,这些标志被称为中断屏蔽标志位或中断允许控制位。用户程序可以通过改变这些标志位的设置,在需要的时候允许MCU响应中断,而在不需要的时候将中断请求信号屏蔽(不是取消)。此时尽管产生了中断请求信号,MCU也不会响应中断请求。
按对中断源的控制角度讲,中断源还可以分为以下3类:
- 非屏蔽中断
- 可屏蔽中断
- 软件中断
中断控制与中断响应条件
单片机检测到某一中断源产生符合条件的中断信号时,其硬件会自动将该中断源对应的中断标志位置1,这就意味着有中断信号产生并向MCU申请中断。但中断标志位的置1,并不代表MCU一定响应该中断。
要MCU响应中断要满足三个条件:
- 全局中断允许标志位为“1”
- 请求中断A的中断源自己的中断允许标志位为“1”
- 存在中断A
响应A中断 = 全局中断允许标志位 AND 中断A允许标志 AND 中断A标志