【51 单片机入门到进阶】06 入门:51单片机中断系统概念
·
1,什么是中断?
(1)中断与中断系统
中断:CPU 执行当前程序时,接收到外部 / 内部紧急事件请求,暂停当前任务→处理紧急事件→返回断点继续执行原程序的过程。
中断系统:实现中断功能的硬件 / 软件集合,负责管理中断请求、优先级判定与响应流程。
中断源:触发中断请求的事件源(如外部引脚、定时器溢出、串口通信完成等)。
(2)中断优先级与嵌套
优先级机制:多个中断源同时请求时,CPU 按优先级高低响应,优先处理最紧急的中断;STC89C51RC 支持2级可编程优先级,可通过软件灵活配置。
中断嵌套:CPU 处理低优先级中断时,若收到更高优先级中断请求,可暂停当前服务程序,转而去处理高优先级中断,处理完成后再回到原低优先级中断继续执行,属于多级中断系统;同优先级 / 低优先级中断无法打断正在执行的中断服务程序。
同优先级响应规则:若多个同优先级中断同时触发,CPU 按固定硬件查询次序决定响应顺序:
2,STC89C51RC 中断系统结构
(1)STC89C51RC 中断系统核心特性:
5 个中断源
2 级中断优先级(高 / 低)
支持中断嵌套(高优先级打断低优先级)
5 个中断可独立使能 / 关闭
总中断开关(EA)
(2)中断系统结构:

3,中断源与中断入口详解
| 中断源名称 | 中断服务函数 | 中断地址 | 触发条件 | 对应引脚 / 模块 |
|---|---|---|---|---|
| 外部中断 0 (INT0) | interrupt 0 | 0003H | 下降沿 / 低电平触发 | P3.2 |
| 定时器 0 中断 (T0) | interrupt 1 | 000BH | 定时器 0 计数溢出 | 内部定时器模块 |
| 外部中断 1 (INT1) | interrupt 2 | 0013H | 下降沿 / 低电平触发 | P3.3 |
| 定时器 1 中断 (T1) | interrupt 3 | 001BH | 定时器 1 计数溢出 | 内部定时器模块 |
| 串口 (UART) 中断 | interrupt 4 | 0023H | 串口接收 / 发送完成 | P3.0(RXD)/P3.1(TXD) |
4,中断控制相关寄存器

(1)中断运行寄存器(IE)
| 位序号 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
|---|---|---|---|---|---|---|---|---|
| 位符号 | EA | — | — | ES | ET1 | EX1 | ET0 | EX0 |
| 功能说明 | 总中断开关 | 保留位 | 保留位 | 串口中断允许 | 定时器 1 中断允许 | 外部中断 1 允许 | 定时器 0 中断允许 | 外部中断 0 允许 |
| 使能代码 | EA = 1; |
— | — | ES = 1; |
ET1 = 1; |
EX1 = 1; |
ET0 = 1; |
EX0 = 1; |
关键说明
<1> 总开关:EA = 1; 是开启所有中断的前提,必须先写这一句,否则任何分中断都无法响应。
<2> 常用中断使能组合:
- 开启外部中断 0:
EA=1; EX0=1; - 开启定时器 0 中断:
EA=1; ET0=1; - 开启外部中断 1:
EA=1; EX1=1; - 开启定时器 1 中断:
EA=1; ET1=1; - 开启串口中断:
EA=1; ES=1;
(3)中断优先级控制寄存器(IP)
| 位序号 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
|---|---|---|---|---|---|---|---|---|
| IP 位符号 | — | — | PS | PT1 | PX1 | PT0 | PX0 | |
| 对应中断源 | — | — | — | 串口 | 定时器 1 | 外部中断 1 | 定时器 0 | 外部中断 0 |
| 优先级组合 | — | — | — | 1 = 高优先级;0 = 低优先级 | 1 = 高优先级;0 = 低优先级 | 1 = 高优先级;0 = 低优先级 | 1 = 高优先级;0 = 低优先级 | 1 = 高优先级;0 = 低优先级 |
(4) 外部中断,定时器 0/1 运行控制寄存器(TCON)
| 位序号 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
|---|---|---|---|---|---|---|---|---|
| 位符号 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
| 功能说明 | 定时器 1 溢出中断标志 | 定时器 1 运行控制位 | 定时器 0 溢出中断标志 | 定时器 0 运行控制位 | 外部中断 1 请求标志 | 外部中断 1 触发方式控制 | 外部中断 0 请求标志 | 外部中断 0 触发方式控制 |
| 配置语句 | 硬件自动置 1 / 中断响应后自动清零 | TR1 = 1;(启动)TR1 = 0;(停止) |
硬件自动置 1 / 中断响应后自动清零 | TR0 = 1;(启动)TR0 = 0;(停止) |
硬件自动置 1 / 中断响应后自动清零 | IT1 = 1;(下降沿)IT1 = 0;(低电平) |
硬件自动置 1 / 中断响应后自动清零 | IT0 = 1;(下降沿)IT0 = 0;(低电平) |
(5) 串口控制寄存器(SCON)
| 位序号 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
|---|---|---|---|---|---|---|---|---|
| 位符号 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
| 功能说明 | 串口工作方式选择位 0 | 串口工作方式选择位 1 | 多机通信控制位 | 接收使能位 | 发送第 9 位数据位 | 接收第 9 位数据位 | 发送完成中断标志 | 接收完成中断标志 |
| 配置语句 | SM0 = 0/1; |
SM1 = 0/1; |
SM2 = 0/1; |
REN = 1;(允许接收)REN = 0;(禁止接收) |
TB8 = 0/1; |
硬件自动置位 | 硬件自动置 1需软件清零TI = 0; |
硬件自动置 1需软件清零RI = 0; |
更多推荐
所有评论(0)