STC12C5A60S2 单片机串口2的通信功能测试

根据手册说明,STC12C5A60S2 系列单片机可以直接使用 reg51.h 的头文件,只是在用到相应的特殊功能寄存器时,要做相应的定义即可。

笔记来自视频教程链接: https://www.bilibili.com/video/BV1Qq4y1Z7iS/?spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

开启两个串口,进行测试。

在这里插入图片描述

使用串口二的接收中断,要把串口二中断使能给加进来。

 IE2 = 0x01;             //Enable UART2 interrupt

uart2.c 的代码如下:

#include "uart2.h"extern void sendByte(unsigned char dat);void uart2_init(void)  //9600bps@11.0592MHz
{AUXR &= 0xF7;		//波特率不倍速S2CON = 0x50;		//8位数据,可变波特率AUXR &= 0xFB;		//定时器时钟12T模式BRT = 0xFD;			//设置定时重载值AUXR |= 0x10;		//启动独立波特率发射器IE2 = 0x01;             //Enable UART2 interrupt
}void uart2_SendByte(unsigned char dat)
{S2BUF = dat;while(!(S2CON & S2TI)); // S2CON & S2TI == 0 时,会一直等在这S2CON &= ~S2TI;         // 手动清 0
}#if 0
void uart2_SendString(unsigned char *dat)
{while(*dat != '\0') {uart2_SendByte(*dat++);}
}
#endifchar putchar(char c)
{uart2_SendByte(c);return c;
}/*----------------------------
UART2 interrupt service routine
----------------------------*/
void Uart2() interrupt 8
{unsigned char dat;if (S2CON & S2RI){S2CON &= ~S2RI;     //Clear receive interrupt flagdat = S2BUF;sendByte(dat);}
}

uart2.h 的代码如下:

#ifndef _UART2_H_
#define _UART2_H_#include "stc12c5a60s2.h"#define S2RI  0x01          //S2CON.0
#define S2TI  0x02          //S2CON.1
#define S2RB8 0x04          //S2CON.2
#define S2TB8 0x08          //S2CON.3// 函数声明
extern void uart2_init(void);
extern void uart2_SendByte(unsigned char dat);
extern void uart2_SendString(unsigned char *dat);#endif

工程是在(基于串口超时接收用户自定义通讯协议的编程实现——协议内 CRC16 校验及接收应答处理)基础上改的,代码已上传至CSDN资料库。

在这里插入图片描述

在这里插入图片描述

12T – 12 分频 – 每12个时钟计数一次
1T – 不分频 – 每1个时钟计数一次

波特率设置为 115200

在这里插入图片描述

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

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

相关文章

EtherNet/IP转Modbus网关以连接AB PLC

本案例为西门子S7-1200 PLC通过捷米特Modbus转EtherNet/IP网关捷米特JM-EIP-RTU连接AB PLC的配置案例。 网关分别从ETHERNET/IP一侧和MODBUS一侧读写数据,存入各自的缓冲区,网关内部将缓冲区的数据进行交换,从而实现两边数据的传输。 网关做为…

Vlan端口隔离(第二十四课)

一、端口隔离 1、端口隔离技术概述 1)端口隔离技术出现背景:为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但这样会浪费有限的VLAN ID资源。 2)端口隔离的作用:采用端口隔离功能,可以实现同一VLAN内端口之间的隔离。 3)如何实现端口隔离功能:只需要…

tcl学习之路(一)(Vivado与Tcl)

学习第一步:安装tcl编译软件 点击这里进入activestate的官网,下载你喜欢的操作系统所需的安装包。这里我下载的是windows下的安装包。一步一步安装即可。   那么,安装后,我们可以在开始的菜单栏处看到三个应用程序。      …

uni-app 使用uni.request封装发送api请求文档服务器请求导航守卫

前言 刚刚接触uni-app时候想着直接使用axios发请求,可以发送成功但是请求头有点问题 后面发现教程都是使用escookrequest-miniprogram三方包发送请求-是没有问题 为什么不直接用uni.request()发送请求,是因为每次请求都要写一次…

Cisco IOS操作(红茶三杯CCNA)

Cisco路由器组件 CPU:执行指令 RAM:断电内容丢失 - 运行操作系统 - 运行配置文件 - IP路由表 - ARP缓存 - 数据包缓存区 ROM:保存开机自检软件,存储路由器的启动引导程序 - bootstrap指令 - 基本的自检软件 - 迷你版IOS 非易失RAM…

STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL库开发)

时钟配置HSI主频配置64M 勾选打开8个通道的ADC 使能连续转换模式 添加DMA DMA模式选择循环模式 使能DMA连续请求 采样时间配置160.5 转换次数为8 配置好8次转换的顺序 配置好串口,选择异步模式配置好需要的开发环境并获取代码 修改main.c 串口重定向 #include &…

从上到下打印二叉树

题目描述 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 算法思想 建立一个vector数组ret用来当做返回的结果数组,建立一个队列用来接收二叉树…

ELK环境搭建——概况

Elastic Stack,核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 目录 一:Elasticsearch: 1.1 从数据中探寻各种问题的答案 1.1.1 定义您自己的搜索方式

毓恬冠佳冲刺上市:打破汽车天窗外商垄断,长安汽车为其主要客户

撰稿|行星 来源|贝多财经 7月23日,上海毓恬冠佳科技股份有限公司(以下简称“毓恬冠佳”)在深圳证券交易所的审核状态变更为“已问询”。据贝多财经了解,毓恬冠佳于2023年6月27日递交招股书,准备在创业板上市。 本次冲…

docker入门讲解

目录 第 1 章 Docker核心概念与安装 为什么使用容器? Docker是什么 Docker设计目标 Docker基本组成

pycharm中运行py文件时,报错:找不到自己编写的包等目录问题ModuleNotFoundError: No module named ‘xxx‘

【问题描述】:pycharm中运行py文件时,报错:找不到自己编写的包等目录问题 【报错】: ModuleNotFoundError: No module named ‘xxx’ ERROR: file not found 【问题定位】:运行的py文件和用到的包或者数据不在同一个文件目录下时…

基于Java+SpringBoot+vue前后端分离网上租赁系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Langchain 的 Structured output parser

Langchain 的 Structured output parser 当您想要返回多个字段时,可以使用此输出解析器。虽然 Pydantic/JSON 解析器更强大,但我们最初尝试了仅具有文本字段的数据结构。 示例代码, from langchain.output_parsers import StructuredOutput…

如何使用GPT作为SQL查询引擎的自然语言

​生成的AI输出并不总是可靠的,但是下面我会讲述如何改进你的代码和查询的方法,以及防止发送敏感数据的方法。与大多数生成式AI一样,OpenAI的API的结果仍然不完美,这意味着我们不能完全信任它们。幸运的是,现在我们可以…

windows系统问题

删除服务 方法 1:使用「注册表」删除 Windows 服务 注册表是 Windows 操作系统和应用程序存储其低层级配置的数据库,当然也包括了「服务」。在 Windows 中删除任何「服务」最简单方法就是使用「注册表编辑器」: 使用Windows R快捷键打开「…

Vue前端渲染blob二进制对象图片的方法

近期做开发,联调接口。接口返回的是一张图片,是对二进制图片处理并渲染,特此记录一下。 本文章是转载文章,原文章:Vue前端处理blob二进制对象图片的方法 接口response是下图 显然,获取到的是一堆乱码&…

FUNBOX_1靶场详解

FUNBOX_1靶场复盘 这个系列的靶场给出的干扰因素都挺多的,必须从中找到有用的线索才可以。 这个靶场你扫描到ip地址后打开网页会发现,ip自动转换成域名了,所以我们需要添加一条hosts解析才可以。 192.168.102.190 funbox.fritz.box从目录…

element 表格里,每一行都循环使用el-popover组件,关闭按钮失效问题如何解决?

具体代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title></title><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><styl…

解决了项目中几个比较搞心态的bug(前端vue、小程序)

1、keep-alive 正常keep-alive的使用便可以做项目的缓存&#xff0c;但是我们的项目很不正常 项目是属于动态缓存&#xff0c;动态缓存有一个弊端 举个栗子&#xff1a; a组件为设置了需要缓存的页面&#xff1b; b组件为设置了需要缓存的页面&#xff1b; c组件为设置了不需…

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

资产核算是指在一定的财务周期&#xff0c;对企业拥有的房屋建筑物、机器设备、商标权和专利权等资产的取得、折旧和处置的会计核算&#xff0c;反映企业固定资产、无形资产的增减变动和价值分摊活动。华为资产核算产品&#xff0c;支撑企业资产从获取到处置全生命周期的管理和…