8051 微控制器中的中断

2024 年 8 月 29 日 | 4 分钟阅读

这是一个子程序调用,由微控制器在具有较高优先级的其他程序请求获取系统总线时给出,此时当前运行的程序中会发生中断。

中断提供了一种推迟或延迟当前进程、执行子程序任务,然后重新启动标准程序的方法。


8051 微控制器中的中断类型

让我们看看 8051 微控制器的五个中断源

  • 定时器 0 溢出中断 - TF0
  • 外部硬件中断 - INT0
  • 定时器 1 溢出中断 - TF1
  • 外部硬件中断 - INT1
  • 串行通信中断 - RI/TI

定时器和串行中断由微控制器内部产生,而外部中断由额外的接口设备或外部连接到微控制器的开关产生。 这些外部中断可以是电平触发或边沿触发。

发生中断时,微控制器会执行中断服务程序。 因此,存储器位置对应于中断启用它。 考虑与存储器位置对应的中断,如下面的中断向量表所示。

Interrupts in 8051 Microcontroller1

8051 微控制器的中断结构

“RESET”后,所有中断都被禁用,因此,所有中断都由软件启用。 在所有五个中断中,如果任何一个或所有中断都被激活,这将设置相应的 interrupt 标志,如图所示,该图对应于 8051 微控制器的中断结构:-

Interrupts in 8051 Microcontroller2

所有中断都可以通过一些特殊功能寄存器设置或清除,这些寄存器也称为中断启用 (IE),这完全取决于优先级,优先级是通过使用中断优先级寄存器执行的。

中断使能 (IE) 寄存器

IE 寄存器用于启用和禁用中断。 这是一个位寻址寄存器,其中 EA 值必须设置为 1 才能启用中断。 此寄存器中的各个位启用特定的中断,如定时器、串行和外部输入。 考虑在下面的 IE 寄存器中,位对应于 1 激活中断,0 禁用中断。

Interrupts in 8051 Microcontroller3

中断优先级寄存器 (IP)

使用 IP 寄存器,可以通过清除或设置中断优先级 (IP) 寄存器中的各个位来更改中断的优先级,如图所示。 它允许低优先级中断可以中断高优先级中断,但它禁止使用另一个低优先级中断进行中断。 如果中断的优先级没有编程,那么微控制器将以预定义的方式执行指令,其顺序为 INT0、TF0、INT1、TF1 和 SI。

Interrupts in 8051 Microcontroller4

8051 中的中断编程

  1. 定时器中断编程:在微控制器中,定时器 1 和定时器 0 中断由定时器寄存器位 TF0 和 TF1 生成。 通过 C 代码进行的定时器中断编程涉及
    • 选择 TMOD 寄存器的配置及其操作模式。
    • 启用 IE 寄存器及其中的相应定时器位。
    • 使用适当的操作模式选择和加载 TLx 和 THx 的初始值。
    • 设置定时器运行位以启动定时器。
    • 为定时器编写子程序,并在子程序结束时清除 TRx 的值。

    让我们看看使用 Timer0 模型进行定时器中断编程,使用中断方法闪烁 LED

  2. 外部硬件中断编程
  3. 如上所述,微控制器 8051 由两个外部硬件中断组成:INT0 和 INT1。 这些中断在引脚 3.2 和引脚 3.3 处启用。 它可以是电平触发或边沿触发。 在电平触发中,引脚 3.2 处的低电平信号启用中断,而在引脚 3.2 处的高到低转换启用边沿触发中断。

    让我们看看 8051 微控制器的可编程功能是

    • 启用中断使能 (IE) 寄存器中外部中断的等效位。
    • 如果是电平触发,则编写适合此中断的子程序,否则,启用 TCON 寄存器中对应于边沿触发中断的位。

    考虑边沿触发外部硬件中断编程是:-

  4. 串行通信中断编程 当需要发送或接收数据时使用。 由于一个中断位用于传输中断 (TI) 和接收器中断 (RI) 标志,因此中断服务程序 (ISR) 必须检查这些标志以了解实际中断。 通过 RI 和 TI 标志的逻辑 OR 操作会导致中断,并且只能通过软件清除。 考虑串行通信中断编程中涉及的步骤是:-
    • 配置中断使能寄存器以启用串行中断。
    • 配置 SCON 寄存器以执行传输和接收操作。
    • 为给定的具有适当功能的 中断编写子程序。
  5. 让我们看看使用串行中断通过串行端口以 9600 波特率发送“E”的程序

下一个主题嵌入式 C 编程