论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Oracle
›
10天学会嵌入式技术之51单片机-day-4
10天学会嵌入式技术之51单片机-day-4
用户国营
论坛元老
|
5 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1602
|
帖子
1602
|
积分
4806
第十二章 中断体系
中断体系是单片机用于处理外部紧急变乱的一种机制。中断体系工作的大抵流程如下
图所示:当 CPU 正在处理某项使命时,外部发生了某个紧急变乱,此时 CPU 会停息当前
的工作,转而行止理这个紧急变乱,处理完之后,再回到原来被中断的位置,继续处理原
来的工作。
中断体系使单片性可以大概实时响应外部变乱,提高了体系的灵活性和响应能力。
关于中断体系,我们先须要了解如下术语:
(1 )中断源
中断源是指可以大概引发中断的变乱。
(2)中断标记位
中断标记位用于标识某个中断是否发生,每个中断源都有一个与之对应的中断标记位。
当某个中断发生时,相应的中断标位就会置为 1,当 CPU 检测到标记位时,就会处理相应的中断。当中断处理完毕后,中断标记位须要复位(置 0),以便吸收下一次中断,有些中
断源的标记位,会在 CPU 处理完中断后,自动复位,而有些则须要
开发
者手动复位,在使
用中断时,须要留意查看手册说明。
(3)中断服务程序
中断服务程序指处理中断的逻辑,当某个中断标记位置 1 时,CPU 会自动执行相应的
中断服务程序。
(4)中断优先级
中断优先级是指在多个中断同时发生时,单片机响应中断的先后顺序,并且
高优先级
的中断可以打断低优先级的中断
。
12.2中断源
STC89C52RC 共有 8 个中断源,8 个中断源可分为 3 类,3 个类别分别是
外部中断
、
定
时器中断
、
串口中断
,下面扼要先容每种范例。
12.2.1外部中断
(4个:INT0,INT1,INT2,INT3)
外部中断是指由单片机外部的紧急变乱触发的中断,通过向单片机的特定引脚发送特
定的信号触发。STC89C52RC 共提供了 4 个外部中断引脚,分别是 INT0,INT1,INT2,
INT3,如下图所示。
51 单片机的外部中断支持两种触发方式,分别是
低电平触发
和
下降沿触发
。
12.2.2 定时器中断
(3个:Timer0、Timer1、Timer2)
定时器中断是指由单片机内部的定时器触发的中断。
定时器是大多数单片机都具备的一个功能模块,用于实现定时使命。其用法是,设置
一个定时值,然后开始计时,待计时结束后,触发相应的定时器中断,
开发
者可以在中断
服务程序中编写定时使命的逻辑。
STC89C52RC 共有三个定时器,分别是 Timer0、Timer1、Timer2,每个定时器都有一
个相对应的中断。
12.2.3 串口中断
串口中断是由单片机串口触发的中断。
串口是单片机用于收发数据的重要接口之一,当单片机通过串口吸收到数据或者发送
完数据后都会触发相应的中断。
STC89C52RC 的串口引脚为 TxD 和 RxD,此中 TxD 用于发送数据,RxD 用于吸收数
据,如下图所示。
12.3 中断服务程序
中断服务程序是指用于处理中断的一段代码,当中断发生时,CPU 就会停息当前程序
的执行,转而执行对应的中断服务程序,处理完中断后再规复到原来的程序。
STC89C52RC 共有 8 个中断源,分为 4 个外部中断、3 个定时器中断和 1 个串口中断,
开发
者可以为每个中断源声明相应的中断服务程序,中断服务程序的声明语法如下。
12.4 中断优先级
STC89C52RC 共有四个中断优先级,每个中断源都可以单独设置优先级。若多个中断
同时发生,优先级高的会被优先处理;若两个中断的优先级雷同,则根据此中断号决定处
理顺序,中断号越小越优先。
除此之外,高优先级的中断还可以打断低优先级的中断,也就是说当 CPU 正在处理一
个中断时,又发生了别的一个优先级比它还高的中断,此时 CPU 会停息原来中断的服务程
序,转而行止理这个高优先级的中断,处理完之后,再回到原来低优先级的中断服务程序。
这个机制叫做中断嵌套,STC89C52RC 支持两级中断嵌套。
第 13 章 外部中断——按键控制 LED 亮灭
13.1 需求形貌
利用外部中断的方式,通过 SW3 按键控制 LED1 的亮灭
13.2 硬件计划
若想通过外部中断的方式检测按钮,必须将按钮接入 4 个外部中断引脚之一,如下图
所示,可以看到 SW3 可用于触发外部中断 0。
13.3 外部中断利用说明
STC89C52RC 的外部中断须要举行如下配置才可利用。
13.3.1 启用中断
默认环境,CPU 会屏蔽所有中断哀求,也就是说 CPU 不会响应任何中断哀求,要利用
中断,必须先辈行启用。
每个中断源是否被启用,是由单片机内部的两个寄存器控制的,这两个寄存器分别是
IE(Interrupt Enable,中断允许)寄存器和 XICON(Auxiliary Interrupt Control,辅助中断
控制)寄存器。
两个寄存器的具体布局如下。
两个寄存器各有 8 位,每位的作用可参考下图(STC89C52 系列中断体系布局图)。
从上图可以看出,STC89C52 系列的中断体系具有两级控制,起首是 EA 总控制位,其
次是每个中断源各自的控制位。因此若须要启用某个中断,须要先将总控制位 EA 置位 1,
再将该中断自身的控制为置为 1。
13.3.2配置外部中断触发方式
STC89C52 系列的外部中断支持两种触发方式,分别是低电平触发和下降沿触发,4 个
外部中断各须要 1 个控制位用于设置触发方式,这 4 个控制位分布于如下两个寄存器中,
分别是 XICON(Auxiliary Interrupt Control,辅助中断控制)寄存器中、TCON(Timer 0
and 1 Control)寄存器,如下图所示。
4 个控制位的具体作用可参考下图(STC89C52 系列中断体系布局图)。
从上图可以看出 IT0~IT3 分别用于设置外部中断 0 到 3 的触发方式,且 0 表低电平触
发,1 表现下降沿触发。
13.3.3 配置中断优先级(可选)
STC89C52 系列的中断体系支持四个优先级,所以每个中断源的优先级都须要通过 2
个控制位举行配置,8 个中断源共须要 16 个控制位,这 16 个控制位分布在如下 3 个寄存器
中,分别是 IPH(Interrupt Priority High,中断优先级高位)寄存器,IP(Interrupt Priority
Low,中断优先级低位)寄存器,XICON(Auxiliary Interrupt Control,辅助中断控制)寄
存器。
三个寄存器的具体布局如下。
13.3.4 界说中断服务程序
外部中断 0 到外部中断 3 的中断号分别是:0、2、6、7,以外部中断 0 为例,此中断
服务程序应界说为
void INT0_Handler() interrupt 0
{
}
复制代码
13.4 软件计划
13.4.1 实现思路
(1)启用外部中断 0
// 打开中断总开关
EA = 1;
// 打开外部中断 0 开关
EX0 = 1
复制代码
(2)配置外部中断 0 的触发方式
当前案例选择下降沿触发更为公道,因为选择低电平触发会导致按键按下时,外部中
断一直被重复触发。
// 配置外部中断为下降沿触发
IT0 = 1;
复制代码
(3)配置中断优先级
当前程序只有一个,优先级可省略不配。
(4)中断服务程序
完成上述配置后,须要根据需求界说中断服务程序,当前需求相对比较简朴,中断服
务程序如下。
void INT0_Func() interrupt 0
{
// 中断中打开 LED0
LED0 = ~LED0;
}
复制代码
13.4.2 完备代码
#include <STC89C5xRC.H> //包罗 STC89C52 的头文件#define LED0 P00void Init_INT0(){ // 打开中断总开关 EA = 1; // 打开外部中断 0 开关 EX0 = 1; // 配置外部中断为下降沿触发 IT0 = 1;}void main(){ Init_INT0(); while (1);}/*** @brief 中断函数中打开 LED0,代表当触发中断时,LED0 会打开。* 根据我们之前的设置,当按下 SW3 时,P32 为低电平,此时 LED0 打开。** interrupt 0 表现 0 号中断触发时执行该函数的逻辑* 假如用 C 语言编程,中断查询序次就是中断号*/void INT0_Func() interrupt 0
{
// 中断中打开 LED0
LED0 = ~LED0;
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
用户国营
论坛元老
这个人很懒什么都没写!
楼主热帖
Beta 阶段事后分析
iOS全埋点解决方案-APP和H5打通 ...
Android studio实现网上订餐app
Ubuntu22.04+ROS2中实现Moveit2控制gaz ...
mysql主从搭建
完整版彻底卸载SQL Server2019
分布式锁
复杂「场景」数据导入导出
关键容灾技能比较
【云原生】-如何搭建配置Docker私有仓 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
公有云
Postrge-SQL技术社区
分布式数据库
快速回复
返回顶部
返回列表