蓝桥杯篇---IAP15F2K61S2串口


文章目录

  • 前言
  • 简介
  • 串口通信的基本参数
    • 1.波特率
    • 2.数据位
    • 3.停止位
    • 4.校验位
  • 串口相关寄存器
    • 1.SCON
    • 2.SBUF
    • 3.PCON
    • 4.TMOD
    • 5.TH1/TL1
  • 串口使用步骤
    • 1.配置波特率
    • 2.配置串口模式
    • 3.使能串口中断
    • 4.发送数据
    • 5.接收数据
    • 6.处理中断
  • 示例代码:串口发送与接收
  • 示例代码:串口接收数据并回显
  • 注意事项
    • 1.波特率设置
    • 2.中断优先级
    • 3.数据缓冲区
    • 4.错误处理
  • 总结


前言

本文仅仅简单介绍了IAP15F2K61S2的串口的使用。


简介

IAP15F2K61S2 是一款基于8051内核的单片机,内置一个全双工的串行通信接口(UART),支持异步串行通信。串口通信是单片机与外部设备(如PC、传感器、其他单片机等)进行数据交换的常用方式。

串口通信的基本参数

1.波特率

波特率:数据传输速率,常见值有9600、19200、38400、57600、115200等。

2.数据位

数据位:每帧数据的位数,通常为8位

3.停止位

停止位:每帧数据结束的标志位,通常为1位

4.校验位

校验位:用于错误检测,可以是无校验、奇校验或偶校验

串口相关寄存器

1.SCON

SCON(串口控制寄存器):配置串口的工作模式和状态

2.SBUF

SBUF(串口数据缓冲器):用于发送和接收数据。

3.PCON

PCON(电源控制寄存器):包含波特率加倍控制位(SMOD)。

4.TMOD

TMOD(定时器模式寄存器):用于配置定时器以生成波特率

5.TH1/TL1

TH1/TL1:定时器1的初值寄存器,用于波特率生成

串口使用步骤

1.配置波特率

配置波特率:通过定时器1设置波特率。

2.配置串口模式

配置串口模式:设置 SCON 寄存器

3.使能串口中断

使能串口中断:如果需要中断方式接收数据,需配置 IE 寄存器。

4.发送数据

发送数据:将数据写入 SBUF

5.接收数据

接收数据:从 SBUF 读取数据

6.处理中断

处理中断:在中断服务函数中处理接收或发送完成事件

示例代码:串口发送与接收

以下代码展示了如何使用串口在 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_SendByte(uchar dat) {SBUF = dat;   // 将数据写入SBUFwhile (!TI);  // 等待发送完成TI = 0;       // 清除发送中断标志
}void UART_SendString(char *str) {while (*str) {UART_SendByte(*str++);  // 逐个发送字符}
}void UART_ISR() interrupt 4 {if (RI) {     // 如果接收中断标志置位RI = 0;   // 清除接收中断标志P1 = SBUF; // 将接收到的数据输出到P1口}
}void main() {UART_Init();  // 初始化串口UART_SendString("Hello, World!\n");  // 发送字符串while (1);    // 主循环,等待中断
}
代码说明
UART_Init:
设置串口为模式18位数据,1位停止位)。
配置定时器1为模式28位自动重装),设置波特率为9600。
使能串口中断和总中断。
启动定时器1。UART_SendByte:
将数据写入 SBUF,启动发送。
等待发送完成(TI = 1),并清除发送中断标志。UART_SendString:
逐个发送字符串中的字符。UART_ISR:
串口中断服务函数,接收数据并将其输出到P1口。main:
初始化串口,发送字符串 "Hello, World!",进入主循环等待中断。

示例代码:串口接收数据并回显

以下代码展示了如何使用串口在 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_SendByte(uchar dat) {SBUF = dat;   // 将数据写入SBUFwhile (!TI);  // 等待发送完成TI = 0;       // 清除发送中断标志
}void UART_ISR() interrupt 4 {if (RI) {     // 如果接收中断标志置位RI = 0;   // 清除接收中断标志UART_SendByte(SBUF);  // 将接收到的数据回显}
}void main() {UART_Init();  // 初始化串口while (1);    // 主循环,等待中断
}
代码说明
UART_Init:
初始化串口,设置波特率为9600。UART_SendByte:
发送一个字节的数据。UART_ISR:
串口中断服务函数,接收数据并回显。main:
初始化串口,进入主循环等待中断。

注意事项

1.波特率设置

波特率设置:波特率需要与通信设备一致,否则会导致通信失败。

2.中断优先级

中断优先级:如果有多个中断,需合理设置中断优先级

3.数据缓冲区

数据缓冲区:在实际应用中,可能需要使用缓冲区来存储接收到的数据

4.错误处理

错误处理:在实际应用中,需考虑**通信错误(如帧错误、溢出错误)**的处理。


总结

通过以上代码和说明,你可以在 IAP15F2K61S2 上实现串口通信功能,包括数据发送、接收和回显。实际开发中可以根据需求扩展功能,如协议解析、数据校验等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21341.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[AHOI2018初中组] 分组---贪心算法

贪心没套路果真如此。 题目描述 小可可的学校信息组总共有 n 个队员&#xff0c;每个人都有一个实力值 ai​。现在&#xff0c;一年一度的编程大赛就要到了&#xff0c;小可可的学校获得了若干个参赛名额&#xff0c;教练决定把学校信息组的 n 个队员分成若干个小组去参加这场…

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …

用deepseek学大模型08-长短时记忆网络 (LSTM)

deepseek.com 从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c; 模型应用场景和优缺点&#xff0c;及如何改进解决及改进方法数据推导…

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算&#xff1f; 2.1、One-hot分类编码&#xff08;传统词表示方法&#xff09; 2.2、词向量 3、Transformer架构 3.1、何为注意力机制&#xff1f; 3.2、注意力机制在 Transformer 模型中有何意义&#xff1f; 3.3、位置编…

鸿道Intewell操作系统:赋能高端装备制造,引领国产数控系统迈向新高度

在当今全球制造业竞争日益激烈的时代&#xff0c;高端装备制造作为国家核心竞争力的重要组成部分&#xff0c;其发展水平直接影响着一个国家的综合实力。而CNC数控系统&#xff0c;作为高端装备制造的“大脑”&#xff0c;对于提升装备的精度、效率和智能化水平起着关键作用。鸿…

mac开发环境配置笔记

1. 终端配置 参考&#xff1a; Mac终端配置笔记-CSDN博客 2. 下载JDK 到 oracle官网 下载jdk: oracle官网 :Java Downloads | Oraclemac的芯片为Intel系列下载 x64版本的jdk&#xff1b;为Apple Mx系列使用 Arm64版本&#xff1b;oracle官网下载时报错&#xff1a;400 Bad R…

【Python爬虫(29)】爬虫数据生命线:质量评估与监控全解

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介&#xff1a;在人工智能飞速发展的今天&#xff0c;大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作&#xff0c;还是科研辅助、代码生成&#xff0c;大模型的身影无处不在。然而&#xff0c;面对市场上琳琅满目的工具&#xff0c;如何挑选最适合自己的那…

测评雷龙出品的CS SD NAND贴片式TF卡

一、前言 在现代科技飞速发展的背景下&#xff0c;存储解决方案的创新与进步成为了推动各行各业发展的重要力量。这篇文章讲解雷龙公司出品的CS SD NAND贴片式TF卡的深度测评。这款产品不仅以其小巧精致的设计脱颖而出&#xff0c;更凭借其卓越的性能和可靠性&#xff0c;在众…

Hadoop一 HDFS分布式文件系统

一 分布式文件存储 了解为什么海量数据需要使用分布式存储技术 100T数据太大&#xff0c;单台服务器无法承担。于是&#xff1a; 分布式服务器集群 靠数量取胜&#xff0c;多台服务器组合&#xff0c;才能Hold住&#xff0c;如下 分布式不仅仅是解决了能存的问题&#xff…

windows下docker使用笔记

目录 镜像的配置 镜像的拉取 推荐镜像源列表&#xff08;截至2025年2月测试有效&#xff09; 配置方法 修改容器名字 如何使用卷 创建不同的容器&#xff0c;每个容器中有不同的mysql和java版本&#xff08;不推荐&#xff09; 1. 安装 Docker Desktop&#xff08;Win…

1005 K 次取反后最大化的数组和(贪心)

文章目录 题目[](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/)算法原理源码总结 题目 如上图&#xff0c;k是取反的次数&#xff0c;在数组【4&#xff0c;-1,3】中&#xff0c;当k 1&#xff0c;把-2取反为2&#xff0c;和为9&#xff1b;在数组…

java毕业设计之医院门诊挂号系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的医院门诊挂号系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 医院门诊挂号系统的主要使用者…

深入学习解析:183页可编辑PPT华为市场营销MPR+LTC流程规划方案

华为终端正面临销售模式转型的关键时刻&#xff0c;旨在通过构建MPRLTC项目&#xff0c;以规避对运营商定制的过度依赖&#xff0c;并探索新的增长路径。项目核心在于建设一套全新的销售流程与IT系统&#xff0c;支撑双品牌及自有品牌的战略发展。 项目总体方案聚焦于四大关键议…

JUC并发—8.并发安全集合一

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…

Cython学习笔记1:利用Cython加速Python运行速度

Cython学习笔记1&#xff1a;利用Cython加速Python运行速度 CythonCython 的核心特点&#xff1a;利用Cython加速Python运行速度1. Cython加速Python运行速度原理2. 不使用Cython3. 使用Cython加速&#xff08;1&#xff09;使用pip安装 cython 和 setuptools 库&#xff08;2&…

DApp 开发入门指南

DApp 开发入门指南 &#x1f528; 1. DApp 基础概念 1.1 什么是 DApp&#xff1f; 去中心化应用&#xff08;DApp&#xff09;是基于区块链的应用程序&#xff0c;特点是&#xff1a; 后端运行在区块链网络前端可以是任何框架使用智能合约处理业务逻辑数据存储在区块链上 1…

基于Spring Security 6的OAuth2 系列之二十 - 高级特性--令牌交换(Token Exchange)

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…

【开源】编译器,在线操作

目录 1. 思绪思维导图&#xff1a;simple mind map2. Markdown&#xff1a;md-editor-v33. 文档&#xff1a;wangEditor4. 电子表格&#xff1a;Luckysheet5. 幻灯片&#xff1a;PPTist6. 白板&#xff1a;excalidraw7. 流程图&#xff1a;drawio 1. 思绪思维导图&#xff1a;…