AVR 微控制器中的外部中断

2024 年 9 月 27 日 | 2 分钟阅读

微控制器可以从 I/O 端口接收输入,中断用于接收由外部事件生成的输入。中断事件使用完全独立的代码段(称为“中断子程序”)来指导程序执行的流程。微控制器有许多中断源可用。它们大多数是由内部模块生成的,称为内部中断。

要运行中断子程序,需要满足以下要求

  • 必须通过设置相应的中断屏蔽/中断使能位来激活中断源。
  • AVR 状态寄存器中的使能位必须设置为 1。为此,使用名为“sei”(设置中断使能)的指令。
  • 必须存在中断子程序。如果没有要运行的代码,则必须在特定内存空间中存在一个空子程序,以对应于该中断。
  • 最后,必须发生事件,以便触发例程的执行。

在 AVR Studio 中编写中断子程序

在微控制器的 C 代码中使用中断子程序很棘手。因此,AVR GCC 开发人员使用一些符号来表示中断和宏,这些符号可以最大程度地减少许多程序中的代码大小。

下面给出了外部中断 0 和外部中断 1 的中断子程序


与外部中断相关的寄存器

下表显示了微控制器单元控制寄存器

MCU 控制寄存器 - MCUCR
76543210
位名称SESM2SM1SM0ISC11ISC10ISC01ISC00
初始值00000000
读/写RWRWRWRWRWRWRWRW

下表显示了中断感应控制真值表

ISCx1ISCx0中断触发于
00INTx 引脚的低电平
01INTx 引脚内的任何逻辑变化
10INTx 引脚的下降沿
11INTx 引脚的上升沿

电路图

ES Circuit Diagram

源代码

下一个主题面试问题