目录
What
中断
计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程叫做中断。
中断的4个步骤
中断分为4个步骤:中断请求->中断响应->中断处理->中断返回。
举例:假设你正在吃饭,这时接到快递员电话叫你下楼取快递只等5分钟,这就是 中断请求。然后你回答:“好的,我现在就来”这就是 中断响应。接着你停止吃饭下楼去取快递,这就是 中断处理。取完快递,你再回来接着吃饭,这就叫做 中断返回
数据的输入/输出传送方式
- 无条件传送方式
一方对另一方来说总是准备好的。
- 查询传送方式(LOOK UP)
传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待。
- 中断传送方式(IRQ)
一方通过申请中断的方式与另一方进行数据传送。
- 中断传送方式特点
- 提高CPU效率
- 解决速度矛盾
- 实现并行工作
- 应付突发事件
- 直接存储器存取方式(DMA)
双方直接通过总线传送数据, 不经CPU中转。适用于数据量大高速通讯的设备不占用CPU时间。
中断系统结构
引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
51子系列允许的5个中断源
外部中断源(2个):
- INT0——由P3.2端口线引入,低电平或下降沿引起。
- INT1——由P3.3端口线引入,低电平或下降沿引起。
这两个外部中断源标志和它们的触发方式控制位由特殊功能寄存器TCON的低4位控制。
内部中断源(3个):
- T0——定时器/计数器0中断,由T0回零溢出引起。
- T1——定时器/计数器1中断,由T1回零溢出引起。
- TI/RI——串行I/O中断,串行端口完成一帧字符发送/接收后引起。
这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。
Why
51单片机中断系统内部结构图
How
使用单片机中断系统
一、允许中断
EA = 1; //开总中断
EX1 = 1; //开外部中断1
二、配置中断方式
IT1 = 1; //跳变沿触发
三、编写中断处理函数
优先级处理原则
- 中断优先级处理原则
对同时发生多个中断申请时:
不同优先级的中断同时申请(很难遇到)——先高后低
相同优先级的中断同时申请(很难遇到)——按序执行
正处理低优先级中断又接到高级别中断——高打断低
正处理高优先级中断又接到低级别中断——高不理低
- 内部查询顺序:
在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一优先级内,还同时存在另一辅助优先级结构。
其查询顺序如下:
函数格式
void int1() interrupt 2 //中断处理函数,加关键字interrupt和入口号
{
中断处理语句
}
Summary
中断响应条件
- 此中断源的中断允许位为1。
- 总中断CPU中断打开(EA = 1)。
- 中断源有中断请求。
外部中断初始化
EA = 1; //开总中断
EX1 = 1; //开外部中断1
IT1 = 1; //跳变沿触发
中断处理函数
void int1() interrupt 2
{
中断处理程序
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏