蓝桥杯篇---IAP15F2K61S2中断
文章目录
- 前言
- 简介
- 中断源
- 1.外部中断
- 2.定时器中断
- 3.串口中断
- 4.ADC中断
- 5.PCA中断
- 6.SPI中断
- 7.PWM中断
- 中断优先级
- 中断相关寄存器
- 1.IE
- 2.IP
- 3.TCON
- 4.SCON
- 中断使用步骤
- 1.配置中断源
- 2.使能中断
- 3.设置优先级
- 4.编写中断服务程序
- 5.清除中断标志
- 示例代码:外部中断使用
- 示例代码:定时器中断使用
- 示例代码:串口中断使用
- 总结
前言
本文仅仅简单介绍了IAP15F2K61S2的中断以及外部、定时器、串口中断的使用。
简介
IAP15F2K61S2 是一款基于8051内核的单片机,支持丰富的中断功能。中断是单片机响应外部或内部事件的重要机制,能够提高程序的实时性和效率。IAP15F2K61S2 的中断系统包括多个中断源,如外部中断、定时器中断、串口中断等。
中断源
IAP15F2K61S2 支持以下中断源:
1.外部中断
INT0(P3.2)
INT1(P3.3)
2.定时器中断
定时器0(TF0)
定时器1(TF1)
3.串口中断
串口接收/发送(RI/TI)
4.ADC中断
ADC转换完成
5.PCA中断
PCA模块中断
6.SPI中断
SPI传输完成
7.PWM中断
PWM周期完成
中断优先级
IAP15F2K61S2 的中断优先级可以通过 **IP(中断优先级寄存器)**和 **IPH(中断优先级高寄存器)**进行配置。每个中断源可以设置为高优先级或低优先级。
中断相关寄存器
1.IE
IE(中断使能寄存器):用于使能或禁用中断。
2.IP
IP(中断优先级寄存器):用于设置中断优先级。
3.TCON
TCON(定时器控制寄存器):包含外部中断的触发方式控制位。
4.SCON
SCON(串口控制寄存器):包含串口中断标志位。
中断使用步骤
1.配置中断源
配置中断源:设置中断触发条件(如外部中断的边沿触发)。
2.使能中断
使能中断:在 IE 寄存器中使能对应的中断。
3.设置优先级
设置优先级:在 IP 或 IPH 寄存器中设置中断优先级(可选)。
4.编写中断服务程序
编写中断服务函数:在中断发生时执行特定的代码。
5.清除中断标志
清除中断标志:在中断服务函数中清除中断标志位。
示例代码:外部中断使用
以下代码展示了如何使用**外部中断0(INT0)**在 IAP15F2K61S2 上实现按键控制LED。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intsbit LED = P1^0; // LED连接到P1.0
sbit KEY = P3^2; // 按键连接到P3.2(INT0)void External_Init() {IT0 = 1; // 设置INT0为下降沿触发EX0 = 1; // 使能外部中断0EA = 1; // 使能总中断
}void External0_ISR() interrupt 0 {LED = ~LED; // LED状态取反
}void main() {External_Init(); // 初始化外部中断while (1); // 主循环,等待中断
}
代码说明
External_Init:
设置 INT0 为下降沿触发(IT0 = 1)。
使能外部中断0(EX0 = 1)。
使能总中断(EA = 1)。External0_ISR:
外部中断0的中断服务函数,每次中断发生时切换LED状态。main:
初始化外部中断,进入主循环等待中断。
示例代码:定时器中断使用
以下代码展示了如何使用定时器0中断在 IAP15F2K61S2 上实现1秒定时。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intsbit LED = P1^0; // LED连接到P1.0void Timer0_Init() {TMOD |= 0x01; // 定时器0,模式1(16位定时器)TH0 = 0xFC; // 初值,定时1msTL0 = 0x18;ET0 = 1; // 使能定时器0中断EA = 1; // 使能总中断TR0 = 1; // 启动定时器0
}void Timer0_ISR() interrupt 1 {static uint count = 0;TH0 = 0xFC; // 重装初值TL0 = 0x18;count++;if (count >= 1000) { // 1秒到达count = 0;LED = ~LED; // LED状态取反}
}void main() {Timer0_Init(); // 初始化定时器0while (1); // 主循环,等待中断
}
代码说明
Timer0_Init:
设置定时器0为模式1(16位定时器)。
初值设置为 TH0 = 0xFC 和 TL0 = 0x18,定时1ms。
使能定时器0中断和总中断。
启动定时器0。Timer0_ISR:
定时器0中断服务函数,每次溢出时重装初值。
使用静态变量 count 计数,达到1000次(即1秒)时切换LED状态。main:
初始化定时器0,进入主循环等待中断。
示例代码:串口中断使用
以下代码展示了如何使用串口中断在 IAP15F2K61S2 上实现数据接收。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intvoid UART_Init() {SCON = 0x50; // 串口模式1,8位数据,1位停止位TMOD |= 0x20; // 定时器1,模式2(8位自动重装)TH1 = 0xFD; // 波特率9600TL1 = 0xFD;ES = 1; // 使能串口中断EA = 1; // 使能总中断TR1 = 1; // 启动定时器1
}void UART_ISR() interrupt 4 {if (RI) { // 如果接收中断标志置位RI = 0; // 清除接收中断标志P1 = SBUF; // 将接收到的数据输出到P1口}
}void main() {UART_Init(); // 初始化串口while (1); // 主循环,等待中断
}
代码说明
UART_Init:
设置串口为模式1,波特率9600。
使能串口中断和总中断。
启动定时器1。UART_ISR:
串口中断服务函数,接收数据并将其输出到P1口。main:
初始化串口,进入主循环等待中断。
总结
IAP15F2K61S2 的中断功能非常强大,能够满足多种实时性要求较高的应用场景。通过合理配置中断源、优先级和中断服务函数,可以实现高效的事件处理。以上代码示例展示了外部中断、定时器中断和串口中断的基本使用方法,实际开发中可以根据需求进行扩展和优化。
相关文章:
蓝桥杯篇---IAP15F2K61S2中断
文章目录 前言简介中断源1.外部中断2.定时器中断3.串口中断4.ADC中断5.PCA中断6.SPI中断7.PWM中断 中断优先级中断相关寄存器1.IE2.IP3.TCON4.SCON 中断使用步骤1.配置中断源2.使能中断3.设置优先级4.编写中断服务程序5.清除中断标志 示例代码:外部中断使用示例代码…...
【Prometheus】prometheus结合pushgateway实现脚本运行状态监控
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
立创实战派ESP32-S3烧录小智AI指南
小智 AI 聊天机器人-开源项目介绍 本项目是一个开源项目,主要用于教学目的。我们希望通过这个项目,能够帮助更多人入门 AI 硬件开发,了解如何将当下飞速发展的大语言模型应用到实际的硬件设备中。无论你是对 AI 感兴趣的学生,还是…...
深度学习的集装箱箱号OCR识别技术,识别率99.9%
集装箱箱号OCR识别技术是一项结合计算机视觉和规则校验的复杂任务,以下是其关键要点及实现思路的总结: 1、集装箱号结构:11位字符,格式为公司代码(3字母)和序列号(6数字)以及校验码(1数字)和尺寸/类型代码(可选),例如…...
使用 PyTorch 实现标准卷积神经网络(CNN)
卷积神经网络(CNN)是深度学习中的重要组成部分,广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中,我们将使用 PyTorch 实现一个标准的卷积神经网络(CNN),并介绍各个部分的作用。 什…...
Casbin 权限管理介绍及在 Go 语言中的使用入门
引言 在现代软件开发过程中,权限管理是一个至关重要的环节,它关系到系统的安全性和用户体验。Casbin 是一个强大的访问控制库,支持多种访问控制模型,如 ACL(访问控制列表)、RBAC(基于角色的访问…...
如何在Windows下使用Ollama本地部署DeepSeek R1
参考链接: 通过Ollama本地部署DeepSeek R1以及简单使用的教程(超详细) 【DeepSeek应用】DeepSeek R1 本地部署(OllamaDockerOpenWebUI) 如何将 Chatbox 连接到远程 Ollama 服务:逐步指南 首先需要安装oll…...
【分布式理论12】事务协调者高可用:分布式选举算法
文章目录 一、分布式系统中事务协调的问题二、分布式选举算法1. Bully算法2. Raft算法3. ZAB算法 三、小结与比较 一、分布式系统中事务协调的问题 在分布式系统中,常常有多个节点(应用)共同处理不同的事务和资源。前文 【分布式理论9】分布式…...
详细介绍Tess4J的使用:从PDF到图像的OCR技术实现
在当今的数字化时代,OCR(光学字符识别)技术被广泛应用于文档扫描、图片文字识别以及其他自动化数据提取任务。Tesseract作为一款强大的开源OCR引擎,在处理图像和PDF中的文本提取方面具有非常高的准确度和效率。本文将详细介绍如何…...
postgres源码学习之简单sql查询
postgres源码学习之sql查询 sql查询的主流程读取sql解析sql重写sql获得执行计划执行查询操作结果返回 sql查询的主流程 参考postgres的处理流程 由上一节,我们可以看到,当有新的连接通过权限认证之后,将进入等待接收sql语句,并执…...
C#项目05-猜数字多线程
本项目利用多线程,通过点击按钮猜数字, 知识点 线程 基本概念 进程:一组资源,构成一个正在运行的程序,这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况, 线…...
前端504错误分析
前端出现504错误(网关超时)通常是由于代理服务器未能及时从上游服务获取响应。以下是详细分析步骤和解决方案: 1. 确认错误来源 504含义:代理服务器(如Nginx、Apache)在等待后端服务响应时超时。常见架构:前端 → 代理服务器 → 后端服务,问题通常出在代理与后端之间。…...
《C语言动态顺序表:从内存管理到功能实现》
1.顺序表 1.1 概念 顺序存储的线性表,叫顺序表。 1.2顺序表存放的实现方式 可以使用数组存储数据,可以实现逻辑上相连,物理内存上也相连。也可以使用malloc在堆区申请一片连续的空间,存放数据,实现逻辑上相连&#…...
通过API 调用本地部署 deepseek-r1 模型
如何本地部署 deepseek 请参考(windows 部署安装 大模型 DeepSeek-R1) 那么实际使用中需要开启API模式,这样可以无拘无束地通过API集成的方式,集成到各种第三方系统和应用当中。 上遍文章是基于Ollama框架运行了deepSeek R1模型…...
DeepSeek-学习与实践
1.应用场景 主要用于学习与使用DeepSeek解决问题, 提高效率. 2.学习/操作 1.文档阅读 文档 DeepSeek -- 官网, 直接使用 --- 代理网站 --- 极客智坊 https://poe.com/DeepSeek-R1 https://time.geekbang.com/search?qdeepseek -- 搜索deepseek的资料 资料 20250209DeepSeekC…...
DeepSeek和ChatGPT的全面对比
一、模型基础架构对比(2023技术版本) 维度DeepSeekChatGPT模型家族LLAMA架构改进GPT-4优化版本参数量级开放7B/35B/120B闭源175B位置编码RoPE NTK扩展ALiBiAttention机制FlashAttention-3FlashAttention-2激活函数SwiGLU ProGeGLU训练框架DeepSpeedMeg…...
无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解
对于做 Wi-Fi 的朋友,大家可能天天都需要配置各种加密和模式,但是有时候可能会一时忘记如何配置,基于日常的工作经验,总结了一篇文档:《无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解》,具体…...
撕碎QT面具(6):调节窗口大小后,控件被挤得重叠的解决方法
问题:控件重叠 分析原因:因为设置了最小大小,所以界面中的大小不会随窗口的变化而自动变化。 处理方案:修改mimumSize的宽度与高度为0,并设置sizePolicy为Expanding,让其自动伸缩。 结果展示(自…...
解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱
一、引言 机器学习算法种类繁多,它们各自有着独特的优势和应用场景。前面我们学习了线性回归算法、逻辑回归算法、决策树算法。而今天,我们要深入探讨的是其中一种经典且广泛应用的聚类算法 —— K - 平均算法(K-Means Algorithm)…...
【Linux】匿名管道的应用场景-----管道进程池
目录 一、池化技术 二、简易进程池的实现: Makefile task.h task.cpp Initchannel函数: 创建任务: 控制子进程: 子进程执行任务: 清理收尾: 三、全部代码: 前言: 对于管…...
机器学习(1)安装Pytorch
1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...
Linux 多Python版本统一和 PySpark 依赖 python 包方案
背景 Linux 服务器经常有多个Python版本,比如 Python2 有两个版本,Python3 有两个版本。在使用上容易混淆,而且有些需要新增一些 module 更容易,安装如果路径不统一,导致日常使用时,会出现找不到新安装mod…...
PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...
DeepSeek是什么?两种模型的对比?
最近DeepSeek的风也是很大,它也是很火,那么DeepSeek是什么呢? 什么是DeepSeek? DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型&a…...
跟着 Lua 5.1 官方参考文档学习 Lua (2)
文章目录 2.3 – Variables2.4 – Statements2.4.1 – Chunks2.4.2 – Blocks2.4.3 – Assignment2.4.4 – Control Structures2.4.5 – For Statement2.4.6 – Function Calls as Statements2.4.7 – Local Declarations 2.3 – Variables Variables are places that store v…...
Python基于循环神经网络的情感分类系统(附源码,文档说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
Zookeeper应用案例-分布式锁-实现思路
以下是具体实现代码 第一步:注册锁节点 第二步:获取锁节点,如果自己是最小的节点,就获取权限 第三步:拿到锁就开始自己的业务逻辑 第四步:业务逻辑好了就要释放这把锁 第五步:重新注册监听&…...
java练习(32)
ps:题目来自力扣 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表…...
伯克利 CS61A 课堂笔记 10 —— Trees
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Trees 树 Ⅰ Tree Abstraction Ⅱ Implementing the Tree Abstraction 02 Tree Processing 建树过程 Ⅰ Fibonacci tree Ⅱ Tree Process…...
让编程变成一种享受-明基RD320U显示器
引言 作为一名有着多年JAVA开发经验的从业者,在工作过程中,显示器的重要性不言而喻。它不仅是我们与代码交互的窗口,更是影响工作效率和体验的关键因素。在多年的编程生涯中,我遇到过各种各样的问题。比如,在进行代码…...
