当前位置: 首页 > news >正文

51单片机——中断(重点)

        学习51单片机的重点及难点主要有中断定时器串口等内容,这部分内容一定要认真掌握,这部分没有学好就不能说学会了51单片机

1、中断系统

1.1 概念

        中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。

        eg::你打开火, 烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警 声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完 开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断

对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。

 1.2 中断结构

        STC89C5X 系列单片机提供了8个中断请求源,它们分别是:外部中断0(INTO)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)、定时器0中断、定时器1中断、定时器2中断、串口(UART)中断。

        注意:51 系列单片 机一定有基本的 5 个中断,但不全有 8 个中断,需要查看芯片手册,通常我 们使用的都是基本的5个中断:INT0、INT1、定时器0/1,串口中断

        ①INT0对应的是P3.2口的附加功能,可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

        ②INT1对应的是P3.3口的附加功能,可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

        ③T0对应的是P3.4口的附加功能,TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

        ④T1对应的是P3.5口的附加功能,TF1(TCON.7),片内定时/计数器T1 溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中 断。

        ⑤RXDTXD对应的是P3.0P3.1口的附加功能,RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

1.3 中断相关寄存器

1.3.1 中断允许控制 IE

        CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的

EX0(IE.0):外部中断0允许位

ET0(IE.1):定时/计数器T0中断允许位

EX1(IE.2):外部中断0允许位

ET1(IE.3):定时/计数器T1中断允许位

ES(IE.4):串行口中断允许位

EA (IE.7):CPU中断允许(总允许)位

1.3.2  中断请求标志 TCON

IT0(TCON.0):外部中断0触发方式控制位。当IT0=0 时,为电平触发方式; 当IT0=1 时,为边沿触发方式(下降沿有效)

IE0(TCON.1):外部中断0中断请求标志位

IT1(TCON.2):外部中断1触发方式控制位

IE1(TCON.3):外部中断1中断请求标志位

TF0(TCON.5):定时/计数器T0溢出中断请求标志位

TF1(TCON.7):定时/计数器T1溢出中断请求标志位。

1.3.3  中断优先级

 

高优先级的中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断

1.3.4  中断号

 1.3.5 中断响应条件

(1)中断源有中断请求

(2)此中断源的中断允许位为1

(3)CPU开中断(即EA=1)

eg:外部中断0初始化函数

 void exti0_init(){
    EA=1;  //打开总中断开关
    EX0=1;  //打开INT0的中断允许
    IT0=1;  //跳变沿触发方式(下降沿)
}

1.3.6  中断服务函数

 void exti0() interrupt 0 using 1{
    //编写用户所需的功能代码
}

interrupt是一个关键字,表示51单片机中断

0”是中断号,外部中断0的中断号为0

using 1可省略不写

2、外部中断实验

要实现的功能是:使用独立按键K4控制LED1亮灭

#include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 us){
    while(us--);
}
sbit KEY4=P3^3;
sbit LED1=P2^0;
//外部中断1初始化函数
void exti1_init(){
    EA=1;  //打开总中断开关
    EX1=1;  //打开INT1的中断允许
    IT1=1;  //跳变沿触发方式(下降沿)
}
void main(){
    exti1_init();
    while(1){
        
    }
}

void exti1() interrupt 2{
    delay_10us(1000);
    if(KEY4==0){
        LED1=!LED1;
    }
}

要实现的功能是:使用独立按键K3控制LED流水灯

#include "reg51.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 us){
    while(us--);
}
sbit KEY3=P3^2;

#define LED P2
//外部中断0初始化函数
void exti0_init(){
    EA=1;  //打开总中断开关
    EX0=1;  //打开INT0的中断允许
    IT0=1;  //跳变沿触发方式(下降沿)
}
void main(){
    exti0_init();
    while(1){
        
    }
}
void exti0() interrupt 0{
    u16 i=0;
    delay_10us(1000);  //消抖
    if(KEY3==0){
        LED=0xfe;
        delay_10us(50000);
        for(i=0;i<7;i++){
            LED=_crol_(LED,1);
            delay_10us(50000);
        }
        for(i=0;i<7;i++){
            LED=_cror_(LED,1);
            delay_10us(50000);
        }
    }
}

        有人就会问,在主函数中怎么没有看到按键对LED的控制呢?因为我们在exti0_init()函数内就已经把按键管脚配置为外部中断0下降沿触发,当有按键按下,即会进入对应中断服务函数执行相应的功能程序,LED的控制就在中断函数内完成的。 

相关文章:

51单片机——中断(重点)

学习51单片机的重点及难点主要有中断、定时器、串口等内容&#xff0c;这部分内容一定要认真掌握&#xff0c;这部分没有学好就不能说学会了51单片机 1、中断系统 1.1 概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的&#xff0c;中断功能的存在&#…...

企业级Java 实体对象类定义规范

1. 查询参数类 (Query) 命名规则: xxxQuery.java用途: 用于封装查询操作的请求参数&#xff0c;通常包含分页、过滤、排序等字段。与数据库查询或 API 请求紧密相关。示例: ProductQuery.java、UserQuery.java使用场景: 查询条件的封装&#xff0c;发送查询请求时使用。 2. 返…...

【网络云SRE运维开发】2025第2周-每日【2025/01/07】小测-【第7章 GVRP链路捆绑】理论和实操

文章目录 一、理论题1.1 GVRP协议在华为设备中的主要作用是什么&#xff1f;1.2 在华为交换机上&#xff0c;配置GVRP时&#xff0c;端口的注册模式有哪些&#xff1f;并简要说明其特点。1.3 简述华为设备中GVRP协议的工作过程。1.4 在华为交换机上配置GVRP时&#xff0c;如果两…...

蓝桥杯算法|练习记录

位运算 按位与运算符&#xff08;&&#xff09; 运算规则&#xff1a;两位同时为1&#xff0c;结果才为1&#xff0c;否则结果为0。例如&#xff0c; -3&#xff08;在计算机中表示为1101&#xff09;&5&#xff08;0101&#xff09; 0101&#xff08;即十进制的1&…...

C语言 扫雷程序设计

目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语&#xff1a; 一个简单的扫雷游戏&#xff0c;通过宏定义可以修改行列的…...

CSS语言的文件操作

CSS语言文件操作浅析 CSS&#xff08;层叠样式表&#xff09;是一种用于描述HTML文档表现的样式表语言。它负责设置网页的视觉效果&#xff0c;包括文字、颜色、布局等。然而&#xff0c;CSS不仅仅是用于修饰页面&#xff0c;它在现代开发中的作用正变得愈发重要。在本文中&am…...

前端-计算机网络篇

一.网络分类 1.按照网络的作用范围进行分类 &#xff08;1&#xff09;广域网WAN(Wide Area Network) 广域网的作用范围通常为几十到几千公里,因而有时也称为远程网&#xff08;long haul network&#xff09;。广域网是互联网的核心部分&#xff0c;其任务是长距离运送主机…...

行为分析:LSTM、3D CNN、SlowFast Networks。这三者的优缺点

在行为分析任务中&#xff0c;**LSTM**、**3D CNN** 和 **SlowFast Networks** 是三种常用的深度学习模型。它们各有优缺点&#xff0c;适用于不同的场景和需求。以下是它们的详细对比&#xff1a; --- ### **1. LSTM&#xff08;Long Short-Term Memory&#xff09;** LSTM …...

【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起

【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务&#xff0c;解决屏幕录制音乐播放等操作不被挂起 一、前言 1.后台是什么&#xff1f; 了解后台任务和长时任务前&#xff0c;我们需要先明白鸿蒙的后台特性&#xff1a;所谓的后台&#xff0c;指的是设备返回主界面、锁屏、…...

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…...

基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪

案例来源&#xff1a;https://spectacularai.github.io/docs/sdk/wrappers/oak.html 适配相机&#xff1a;带IMU的 OAK-D 系列相机 基于视觉惯性 SLAM&#xff08;VSLAM&#xff09;、相机和 IMU 数据的融合执行 6 自由度位姿跟踪 ~~~~~~~&#xff08;分界线&#xff09;~~~~~…...

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径&#xff0c;单位&#xff1a;mm h 5; % 圆盘厚度&#xff0c;单位&#xff1a;mm P 300; % 径向受压载荷大小&#xff0c;单位&#xff…...

网络安全抓包

#知识点&#xff1a; 1、抓包技术应用意义 //有些应用或者目标是看不到的&#xff0c;这时候就要进行抓包 2、抓包技术应用对象 //app,小程序 3、抓包技术应用协议 //http&#xff0c;socket 4、抓包技术应用支持 5、封包技术应用意义 总结点&#xff1a;学会不同对象采用…...

WebSocket 测试调试:工具与实践

在前五篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发、客户端实现、安全实践和性能优化。今天,让我们把重点放在测试和调试上,看看如何确保 WebSocket 应用的质量和可靠性。我曾在一个实时通讯项目中,通过完善的测试和调试策略,将线上问题的发现时间从小时级缩短到…...

ArmSoM RK3588/RK3576核心板,开发板网络设置

ArmSoM系列产品都搭配了以太网口或WIFI模块&#xff0c;PCIE转以太网模块、 USB转以太网模块等&#xff0c;这样我们的网络需求就不止是上网这么简单了&#xff0c;可以衍生出多种不同的玩法。 1. 网络连接​ 连接互联网或者组成局域网都需要满足一个前提–设备需要获取到ip&a…...

【学Rust开发CAD】1 环境搭建

文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具&#xff0c;这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统&#xff0c;往…...

数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)

将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入&#xff1a;nums [-10,-3,0,5,9…...

Java 多线程之@Async

SpringBoot 中使用 Async 使用 Async 注解步骤&#xff1a; 添加 EnableAsync 注解。在主类上或者 某个类上&#xff0c;否则&#xff0c;异步方法不会生效 添加 Async注解。在异步方法上添加此注解。异步方法不能被 static 修饰需要自定义线程池&#xff0c;则可以配置线程池…...

代码随想录day38 动态规划6

题目&#xff1a;322.零钱兑换 279.完全平方数 139.单词拆分 多重背包 背包总结 需要重做&#xff1a;322&#xff0c;139 322. 零钱兑换 思路&#xff1a;零钱&#xff0c;可取多次-》完全背包。 注意&#xff1a; 五部&#xff1a; 1.dp[j]:价值为j的时候&#xff0c;最…...

LabVIEW无标题的模态VI窗口的白框怎么去除?

在LabVIEW中&#xff0c;如果你遇到无标题的模态&#xff08;modal&#xff09;VI窗口显示有一个白框&#xff0c;通常是由于VI界面的一些属性或者控件设置问题导致的。为了去除这个白框&#xff0c;可以尝试以下几种方法&#xff1a; 1. 检查VI窗口属性设置 确保你的VI窗口属…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...