[51单片机] 中断1-中断整体介绍
>_<:简单介绍--[高手绕过这一段;心急的直接跳到下一部份]
>_<:51单片机上的应用[应用控制篇]
>_<:MCS51的中断源
外部中断请求源:即外部中断0 和1,经由外部引脚引入,在单片机上有两个引脚,外称为INT0、INT1,也就是P3.2、P3.3这两个引脚
>_<:MCS51的中断向量表
单片机内部的中断模块在每个CPU周期都查询各个中断源的状态,当其发生预期的中断事件时,通知CPU将程序跳转到中断服务程序所在的程序存储器(ROM)地址。该地址称为中断向量。
中断的实质仍然是查询,只是不需要用户程序查询,不占用CPU运行时间而已。
51系列只有5个中断向量,5X系列还增加一个定时器2的中断向量
——————————————————————————————
地址 | 中断入口 | 中断编号
——————————————————————————————
0x0000 | 复位 |
0x0003 | 外部中断0 | 0
0x000B | 定时器0 | 1
0x0013 | 外部中断1 | 2
0x001B | 定时器1 | 3
0x0023 | 串口 | 4
0x002B | 定时器2(5x系列新增的)| 5
——————————————————————————————
>_<:MCS51中断运行的机里
以INT0为例:中断模块在每个CPU时钟周期都查询P3.2的状态,当输入的电平由高电平变为低电平时,CPU的程序运行会立即跳转的到地址0x03。处理INT0中断的代码放在地址为0x03开始的ROM区域。c语言中采用一类特殊的函数来实现此代码定位的功能,叫做 中断服务函数,格式如下:
void 函数名()interrupt N
函数名可以任意,但一般要用一个有意义的函数名,N代表中断向量编号。
>_<:中断控制寄存器IE
MCS51中断系统中,中断的允许或禁止是由片内可以进行位寻址的8位中断允许寄存器IE来控制的。
EX0 :外中断0中断允许
ET0 :定时器0中断允许
EX1 :外中断1中断允许
ET1 :定时器1中断允许
ES :串行口中断允许
ET2 :定时器2中断允许
EA :是总开关,若为0,则所有中断都不允许。
>_<:中断标志及外部中断方式选择寄存器 TCON
IT0 :INT0触发方式控制位,边沿/电平触发模式
IE0 :INT0中断请标志,
IT1 :同上
IE1 :同上
TF0 :定时器/计数器0的溢出中断标志
TF1 :定时器/计数器1的溢出中断标志
>_<:外部中断的2种触发模式
触发模式由IT0和IT1控制。
1)边沿触发:IT0(IT1)=1,INT0(INT1)为边沿触发方式。如果一个周期中采样到高电平,下个周期中采样到低电平,则硬件使IE0(IE1)置1,向CPU请求中断。
2)电平触发:IT0(IT1)=0,INT0(INT1)为电平触发方式。此时外部中断是通过检测P3.2(P3.3)脚的输入电平(低电平)来触发的。采用电平触发时,输入脚的外部中断源必须保持低电平有效,直到该中断被响应。同时在中断返回前必须使用电平变高,否则将会再次产生中断。
一般采用边沿触发方式,因为此模式抗干扰能力较强,极少采用电平触发模式。
[>_<:这一部分转自:http://hi.baidu.com/ft1022/item/ea2713ea92f1382e5a7cfbc6]
[ >_<:谢谢分享总结这么好的知识]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?