51单片机 | 中断系统概念及结构
————————————————————————————————————————————
中断的过程:
对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生);CPU暂时停止当前的工作(中断响应),转而去处理事件B(中断服务),待CPU处理事件B完成后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。
① 中断源 // 5个中断源都有一个中断入口地址,当某个中断源产生中断时,CPU响应中断便到相应的中断入口地址执行中断服务程序
② 中断的嵌套与优先级处理
③ 中断的响应过程
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中断系统结构
-
外部中断请求源:INT0、INT1
外部中断0(INT0)由外部引脚P3.2引入,外部中断1(INT1)由外部引脚P3.3引入
- 内部中断请求源:T0、T1、串口中断
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
程序定义方式
-
定义中断函数的一般形式
void 函数名() interrupt 中断号 using 寄存器工作组
p.s.如果中断函数中调用了其他函数,则被调用函数所使用的寄存器组必须与中断函数相同。中断函数不能参数传递,没有返回值,不能直接被调用。
-
中断序号
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中断优先级
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中断系统寄存器
-
TCON:低4位给外部中断请求源使用,高4位给内部中断请求源定时器T0 T1使用
外部请求源
- IT0:INT0触发方式控制位,可由软件进行置位和复位。IT0=0时,INT0为低电平触发方式。IT0=1时,INT0为负跳变触发方式。
- IE0:INT0中断请求标志位。当有外部的中断请求时,该位置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。
- IT1、IE1的用途和IT0、IE0相似。
内部请求源
- TF0:定时/计数器T0溢出中断标记,当T0产生溢出时,TF0置位。当CPU响应中断后,硬件将TF0复位
- TR0:T0的开闭控制位,TR0=1时定时计数器打开,TR0=0时定时计数器关闭
- TF1、TR1与TF0、TR0相似。
-
SCON:低2位与串口中断相关
内部请求源
- TI、RI:串行口发送、接收中断
-
IE:中断允许寄存器
- EA:中断总控制位。EA=1,CPU开放所有中断;EA=0,CPU禁止所有中断。
- ES:串行口中断控制位。ES=1,允许串行口中断;ES=0,屏蔽串行口中断。
- ET1:定时/计数器TI中断控制位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
- EX1:外部中断1中断控制位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
- ET0:定时/计数器T0中断控制位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
- EX0:外部中断0中断控制位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0断。
-
IP:中断优先级寄存器
在该寄存器中,优先级分为1 0两级,对应的位置为1则为高优先级,位置为0则为低优先级。执行时先将高优先级的中断执行完后才会执行低优先级(同样高优先级情况下,按默认优先级排)。
- PS:串行口中断优先级控制位
- PT1:定时器1优先级控制位
- PX1:外部中断1优先级控制位
- PT0:定时器0优先级控制位
- PX0:外部中断0优先级控制位
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
补充:
外部中断的触发方式选择
-
电平触发方式(低电平触发)
CPU在每个机器周期采样到的外部中断输入线的电平。在中断服务程序返回之前,外部中断请求输入必须无效(即变为高电平),否则CPU返回主程序后会再次响应中断。
适于外中断以低电平输入且中断服务程序能清除外部中断请求(即外部中断输入电平又变为高电平)的情况。
-
跳沿触发方式
连续两次采样,一个机器周期采样到外部中断输入为高,下一个机器周期采样为低,则置"1"中断请求标志,直到CPU响应此中断时,该标志才清0。这样不会丢失中断,但输入的负脉冲宽度至少保持1个机器周期。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!