学习STC51单片机20(芯片为STC89C52RCRC)
每日一言
生活不会一帆风顺,但你的勇敢能让风浪变成风景。
串口助手的界面就等于是pc端的页面设置的是pc端的波特率等等参数 程序里面的是单片机的波特率等等参数
串口助手是 PC 端软件
串口助手(如 STC-ISP)是运行在 PC 上的工具,用于模拟 PC 的串口通信功能。它的所有界面元素(发送缓冲区、接收缓冲区、波特率设置等)都是为 PC 服务的。
发送缓冲区和接收缓冲区属于 PC
-
- 发送缓冲区:PC 上的串口助手将用户输入的数据(如 'a')通过串口线发送给单片机。
- 接收缓冲区:PC 通过串口线接收单片机发送的数据(如 "helloworld"),并显示在界面上。
反正串口助手的发送缓冲区就是pc端的发送缓冲区,可以输入东西向单片机进行发送,接收缓冲区就是pc端的接收缓冲区,接收来自单片机的发送的数据
串口通信03_pc发送指令给单片机进行控制LED
这边我们要学习一个知识点R1是SCON寄存器的第0位他有个特性和T1是相对的
虽然他是叫做中断请求标志位,但是我们这边就是说无论你用不用中断,但是我们可以利用这个特性如果单片机接收到了信息,那么就会执行以下判断,就是这个R1和T1的特性永远都会生效的,就是接受到一帧数据10位后就会硬件就会进行置位,然后我们需要软件复位,(具体怎么置位,在哪个位置位自行看手册)
好了就是单片机会轮询的检查是否接收到信息,接收到后将单片机的SBUF里面的数据读取出来,然后进行判断,如果怎么样怎么样执行相应的代码,单片机这边就会执行相应的操作,这个是pc向单片机发送指令的操作
我们这段代码是,pc在发送缓冲区输入a 发送数据那么进入到单片机检查到了接收到的数据检查到了后就软件复位,然后将数据存放到SUBF接收缓冲区,那么将接收缓冲区SUBF里面的数据读取出来放到cmd这个我们自己定义的容器里,判断cmd的值,然后就是执行相应的操作了
串口通信04_pc串口中断控制LED
(这个是多指令的,单指令的话就是按一个o是否是o如果是就LED亮)
这个的话是利用串口的中断来进行检查我们的字符是否匹配开关灯的字符,我们这边用的不是精确匹配,用的是部分匹配,如果需要的话,后期可以自己去学。
解释代码
先初始化中断函数,那么我们这边是串口中断
用的是这个我们回顾一下interrupt 0 是外部中断0 , 1 是定时器0中断 ,2是外部中断1,3是定时器1中断, 4是串口中断 ,5是定时器2中断 , 6是外部中断2 ,7是外部中断3
好了那么我们的串口中断就是interrupt 4
好的那我们中断函数里面怎么写呢,我们的逻辑是因为每一次一个字符传进去这个RI就会中断一次那么我们因为想要电脑端输入open指令让LED亮,那么中断一次就将这个字符(这个字符指的是你在发送缓冲区输入的open那么会被拆分成’o’ ‘p‘ ’e’ ’n’,这4个字符也跟subf的特性有关因为只能存放1字节的大小,也就是一个字符了)传入到cmd[12]里面然后让 i++ 所以也要提前定义好i,我们这边让i不要每次都为0(因为我们想要在中断函数里面写),当然也可以定义为全局变量,那么我们在中断函数里面写的话,我们就只需要将它设置为静态函数static ,这样的好处就是满足了i只会在第一个字符进去的时候初始化,后面的字符都不会进行初始化了,就是让i++这个基础上用+后的的i了。
然后后面检测的字符都会先将字符存放到SUBF 然后cmd[i]就会先讲这个SUBF里面的值存放到cmd这个数组里面,然后进行i++,那么下一次的字符就会存放到cmd数组的第二个位置。依此类推,
好的这边有一个函数需要解释一下就是strstr这个是
strstr(cmd, "op") 会在整个 cmd 数组中查找 子字符串 "op"。
- 例如,输入 open、operation 甚至 xxopxx 都会触发 LED 点亮。
- 这可能导致意外触发,建议改用精确匹配(如比较完整字符串)
虽然这个不是很精确,但是我们懂得原理就好,这边用的是部分匹配方便我们学习
随后其实我们就是去实现这个功能了,我们这个metset是为了将检查到字符相对应的时候,执行部分匹配成功之后将cmd里面都清为空字符串,’\0’这个就是空字符串的意思
最后这个#define SIZE 12,这个是宏定义,就是为了更好的更改值,只要更改宏定义就好了,所以每当需要更改数组大小的时候更改宏定义里面的数字12就好了
对于这段代码的原理差不多了。。。
相关文章:

学习STC51单片机20(芯片为STC89C52RCRC)
每日一言 生活不会一帆风顺,但你的勇敢能让风浪变成风景。 串口助手的界面就等于是pc端的页面设置的是pc端的波特率等等参数 程序里面的是单片机的波特率等等参数 串口助手是 PC 端软件 串口助手(如 STC-ISP)是运行在 PC 上的工具&#x…...

链路追踪神器zipkin安装详细教程教程
今天分享下zipkin的详细安装教程,具体代码demo可以参考我上篇文章:Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战-CSDN博客 一、Zipkin是什么? Zipkin是由Twitter开源的一款分布式追踪系统(现由OpenZ…...
RabbitMQ备份与恢复技术详解:策略、工具与最佳实践
RabbitMQ作为广泛使用的消息中间件,其高可用性和数据持久化能力使其成为分布式系统的核心组件。然而,硬件故障、人为误操作或灾难性事件仍可能导致数据丢失或服务中断。因此,建立可靠的备份与恢复机制是运维工作的关键环节。本文基于RabbitMQ…...

bug: uniCloud 查询数组字段失败
问题根源:使用了支付宝云 官方说:2024年11月之后创建的新的支付宝云空间,数组字段查询强制必须设置 array 类型的索引 布尔类型的查询,强制必须设置 bool 类型的索引。 方案一:找到云服务空间-》云数据库-》对应的表-…...
Php JIT 使用详解
简介 PHP 8 引入的 JIT(Just-In-Time 编译器) 是该版本的一个重要性能特性,首次让 PHP 有了运行时即时编译的能力,从解释型语言迈向了“编译执行”的方向。 什么是 JIT? JIT 是 即时编译(Just-In-Time c…...

视觉分析开发范例:Puppeteer截图+计算机视觉动态定位
一、选型背景:传统爬虫已无力应对的视觉挑战 在现代互联网环境中,尤其是小红书、抖音、B站等视觉驱动型平台,传统基于 HTML 的爬虫已经难以满足精准数据采集需求: 内容加载由 JS 动态触发,难以直接解析 HTML…...

Linux 基础开发工具的使用
目录 前言 一:下载工具yum 二:文本编辑器vim 1. 命令模式 2. 插入模式 3. 底行模式 三:gcc和g 基本使用格式 常用选项及作用 编译过程示例 四、Linux 项目自动化构建工具 ——make/Makefile 1. make 与 Makefile 的关系 2. Make…...
ElasticSearch查询指定时间内出现的次数/2秒内出现的次数
查询指定时间内出现的次数 POST process-log/_search {"size": 0,"query": {"bool": {"filter": [{"range": {"requestTime": {"from": 1722470400000,"to": 1722556800000}}}]}},"agg…...

华为云Flexus+DeepSeek征文 | Dify-LLM平台一键部署教程及问题解决指南
作者简介 我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 准备工作 2.1 注册华为云账号 2.2 确…...
STP协议:如何消除网络环路风暴
生成树协议(STP,Spanning Tree Protocol)的主要功能: 消除网络环路导致的广播风暴问题(环路会引发MAC地址表不稳定)防止网络中的主机接收重复数据帧 STP工作原理: 选举根桥(Root …...

哈工大计算机系统2025大作业——Hello的程序人生
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算学部 学 号 2023113072 班 级 23L0513 学 生 董国帅 指 导 教 师 史先俊 计算机科学与…...
物联网常用协议Modbus、CAN、BACnet介绍
一、Modbus Modbus 作为工业通信领域的基石,是一款被广泛应用的工业通信协议,主要用于实现可编程逻辑控制器(PLC)等工业电子设备之间的连接。1979 年,Modicon 公司(现施耐德电气的一部分)开发了这一协议,旨在简化工厂内设备间的通信流程。经过多年发展,Modbus 衍生出…...

Vue中van-stepper与input值不同步问题及解决方案
一、问题描述 在使用Vant UI的van-stepper步进器组件与原生input输入框绑定同一响应式数据时,出现以下现象: 通过步进器修改值后,页面直接输出{{ count }}和watch监听器均能获取最新值但input输入框显示的数值未同步更新,仍为旧…...

react基础技术栈
react基础技术栈 react项目构建react的事件绑定React组件的响应式数据条件渲染和列表循环表单绑定 Props和组件间传值,插槽react中的样式操作 生命周期ref 和 context函数组件和hook高阶组件React性能问题React-route的三个版本react-router使用步骤react-router提供…...

Three.js搭建小米SU7三维汽车实战(4)场景搭建
场地搭建 javascript // 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/addons/controls/OrbitControls.js"; // 1. 创建场景 const scene new THREE.Scene(); // 2. 创建相机 const camera ne…...
redis五种数据结构底层实现
参考文档: redis5种数据结构底层实现...

Excel 统计某个字符串在指定区域出现的次数
【本文概要】 Excel 统计某个字符串在指定区域出现的次数: 1、Excel 统计一个单元格内的某字符串的出现次数 2、Excel 统计某一列所有单元格内的某字符串的出现次数 3、Excel 统计某一区域所有单元格内的某字符串的出现次数 1、Excel 统计一个单元格内的某字符串的出…...
【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s
Kubernetes v1.24集群安装配置步骤总结 一、环境准备 (一)系统要求 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。每台机器内存2GB以上,内存不足会限制应用运行。控制平面节点…...
前端开源JavaScrip库
以下内容仍在持续完善中,如有遗漏或需要补充之处,欢迎在评论区指出。感谢支持,如果觉得有帮助,欢迎点赞鼓励。感谢支持 JavaScript 框架Vue.jsVue.js - 渐进式 JavaScript 框架 | Vue.jsReactReactAngularHome • AngularjQueryj…...

【Linux我做主】进度条小程序深度解析
Linux下C语言进度条程序深度解析 进度条小程序GitHub地址 前言前置知识回车换行(CR/LF)的深度解析历史渊源与技术规范在进度条/倒计时中的应用 缓冲区机制的全面剖析缓冲区引入缓冲类型对比进度条开发中的关键控制 进度条实现以小见大——倒计时倒计时最…...
MySQL 使用全局锁会导致的问题?
MySQL 使用全局锁会导致以下核心问题: 业务停摆与主从延迟 主库备份:备份期间所有更新操作被阻塞,业务系统陷入等待状态从库备份:无法执行主库同步的 binlog,导致主从复制延迟加剧 并发性能急剧下降 …...

从Homebrew找到openssl.cnf文件并拷贝到Go项目下使用
安装OpenSSL 在 macOS 上下载和安装 OpenSSL 最常见和推荐的方式是使用 Homebrew,这是一个 macOS 缺失的包管理器。 如果您还没有安装 Homebrew,请先安装它。安装 Homebrew 后,安装 OpenSSL 只需要一条命令。 步骤 1:安装 Home…...
在Java对象转JSON字符串时不显示无值参数
在Java中,可以通过在展示数据的逻辑中添加判断条件来实现这一需求。以下是一些常见的场景和实现方法: 场景一:在Java对象转JSON字符串时 使用Gson库 代码实现 首先引入Gson依赖,如果使用Maven构建项目,在pom.xml文件中…...
在 Ubuntu 服务器上 下载 Clash 文件使用代理
文件Clash.Verge_1.3.8_x64_portable.zip 在 Ubuntu 服务器上不能使用这个Clash 文件**,我们需要的是 Clash.Meta 而不是 Clash Verge GUI 客户端 也就是 Clash Verge GUI 客户端的 Windows 版本,是给 Windows 桌面环境用的图形界面,不适用…...

微信小程序一次性订阅封装
封装代码如下: export async function subscribeMessage(tmplIds: string[]): Promise<ISubscribeMessagePromise> {// 模板ID// 1、获取设置状态const settings (await wx.getSetting({ withSubscriptions: true })).subscriptionsSetting || {}console.log…...
Spring AI MCP的几个小问题
测试时间:2025/05/29 测试版本:Spring AI 1.0.0 问题1:由于启动顺序问题,MCP的服务器端和客户端不能在一个应用里,不然客户端连不上服务器会报错退出。(实际项目应该没有这样用的) 问题2:现在如果配置了…...

安全帽检测算法AI智能分析网关V4守护工地/矿山/工厂等多场景作业安全
一、方案概述 在工业生产与建筑施工场景中,安全帽是保障人员安全的重要装备。但传统人工巡检效率低、易疏漏,难以满足现代安全管理需求。AI智能分析网关V4安全帽检测方案,借助人工智能与计算机视觉技术,实现作业现场安全帽佩戴…...
Pycharm的简单介绍
目录 1. 起源与发展历史 2. 定位与核心作用 3. 主要版本 4. 应用场景 5. 核心功能与优势 6. 优缺点分析 7. 使用入门指南 8. 适用人群 9. 替代工具对比 总结 1. 起源与发展历史 公司背景:由捷克公司 JetBrains(成立于2000年)开发&a…...
重新安装解决mac vscode点击不能跳转问题
依次执行以下过程 删除vscode程序 删除vscode的缓存文件夹(xxx表示你的用户名) /Users/xxx/Library/Application Support/Code 重新安装vscode 这时候你会反向可以跳转项目内的import 文件以及自定义函数。但是import安装的包还不能点击跳转 配置python环境 如果你电脑没有安…...
Go语言中flag包的用法详解
在Go语言编程中,flag包是标准库中用于解析命令行参数的强大工具。它提供了一种简单且灵活的方式来定义和处理命令行标志(flag),使得程序能够从命令行接收用户输入的参数。本文将详细介绍flag包的用法,包括基本概念、常…...