【STC15 学习笔记】8051 中断号简介

8051架构是一种经典的微控制器架构,广泛应用于各种嵌入式系统中。在8051架构中,中断是一种重要的机制,用于处理异步事件,如外部设备的输入、定时器的溢出等。每个中断都有一个对应的中断号,用于标识和处理不同的中断源。

以下是8051架构中常见的中断号及其对应的硬件资源:

  1. 外部中断0 (INT0)

    • 中断号: 0
    • 描述: 外部中断0,通常连接到P3.2引脚。
  2. 定时器0中断

    • 中断号: 1
    • 描述: 定时器0溢出中断。
  3. 外部中断1 (INT1)

    • 中断号: 2
    • 描述: 外部中断1,通常连接到P3.3引脚。
  4. 定时器1中断

    • 中断号: 3
    • 描述: 定时器1溢出中断。
  5. 串行通信中断 (UART)

    • 中断号: 4
    • 描述: 串行通信中断,用于处理UART的接收和发送事件。
  6. 定时器2中断 (仅在某些8052系列中存在)

    • 中断号: 5
    • 描述: 定时器2溢出中断。

每个中断号对应一个中断向量地址,CPU在响应中断时会跳转到相应的中断向量地址执行中断服务程序(ISR)。中断向量地址通常是固定的,例如:

  • 中断号0的中断向量地址是0x0003。
  • 中断号1的中断向量地址是0x000B。
  • 中断号2的中断向量地址是0x0013。
  • 中断号3的中断向量地址是0x001B。
  • 中断号4的中断向量地址是0x0023。
  • 中断号5的中断向量地址是0x002B(仅在8052系列中存在)。

在编写中断服务程序时,需要确保ISR的入口地址与中断向量地址一致,并且ISR的执行时间尽可能短,以避免影响其他中断的响应。

例如,一个典型的定时器0中断服务程序可能如下所示:

void Timer0_ISR(void) interrupt 1 {
    // 中断服务程序代码
    // 清除定时器0中断标志
    TF0 = 0;
}

在这个例子中,interrupt 1 表示这是一个定时器0的中断服务程序。TF0 = 0 用于清除定时器0的中断标志,以确保下次中断能正确触发。

posted @   FBshark  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2023-08-09 【C语言基础】C语⾔中⼆维数组作为函数参数来传递的三种⽅法
2023-08-09 【Linux 应用开发】信号的产生和处理的设置
点击右上角即可分享
微信分享提示