51单片机STC8G串口Uart配置

news2024/11/26 18:49:39

测试环境

单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试;
IDE:KEIL C51;

寄存器配置及主要代码

STC8G系列单片机具有4个全双工异步串行通信接口;本文以串口1为例,串口1有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用;
串口相关寄存器如下表所示,其中红框中的是串口1需要配置的寄存器;
在这里插入图片描述其中,SCON寄存器详细介绍如下,因为我们需要可随意配置的波特率,所以SM0及SM1位需要按照红框中的配置,配置为模式1;其他位为与中断相关,可根据需要配置;
在这里插入图片描述
寄存器PCON和AXUR介绍如下,我们选择定时器2位波特率发生器,波特率不加倍;
在这里插入图片描述
串口1模式1的波特率计算公式如下表,选择定时器2,1T模式,确定好波特率后,可根据红框中的公式计算出定时器的重载值;
例如,时钟频率为22.1184MHz,波特率位19200,则定时器重载值=65536-22118400/(4*19200)=65248,即0xFEE0,将值赋给定时器2的T2H、T2L;
在这里插入图片描述
另外,需要注意的是,定时器的1T或12T模式,通过AUXR寄存器设置;定时器配置可参考51单片机定时器中断配置;
综上,可写出串口1初始化配置的程序如下:

#define FOSC     							22118400L//时钟频率
#define UART1_BAUD_RATE						19200//波特率

/*******************************************************************************
  * 函数名:Uart1_Init
  * 功  能:Uart1初始化
  * 参  数:无
  * 返回值:无
  * 说  明:定时器2为波特率发生器
*******************************************************************************/
void Uart1_Init(void)
{
	uint16_t u16Reload = 0;//重装值
	SCON |= 0x50;//模式1,可变波特率8位数据,允许接收
	PCON &= 0x7F;//串口1波特率不加倍,SMOD=0
	AUXR |= 0x01;//定时器2为波特率发生器
	AUXR |= 0x14;//定时器2开始运行,1T模式
		
	//定时器2初值,自动重载
	u16Reload = (uint16_t)((uint32_t)65536 - (uint32_t)FOSC / ( 4 * (uint32_t)UART1_BAUD_RATE));
	T2H = (uint8_t)(u16Reload >> 8);
	T2L = (uint8_t)(u16Reload >> 0);
		
	//串口1中断优先级2,较高级
	IP &= 0xEF;//PS=0
	IPH |= 0x10;//PSH=1	
	
	TI = 0;//串口1发送中断请求标志
}

另外,如果需要在串口中断里接收处或发送数据,需要用到串口中断服务函数,先查询芯片手册中中断列表,Uart1的中断序号为4:
在这里插入图片描述可在接收中断RI时,读取数据寄存器SBUF即可得到串口接收的数据,在发送中断TI时,对SBUF进行写操作即可,代码如下:

/*******************************************************************************
  * 函数名:UART1_Isr() interrupt 4
  * 功  能:Uart1中断服务子函数
  * 参  数:无
  * 返回值:无
  * 说  明:无
*******************************************************************************/
void UART1_Isr(void) interrupt 4
{
    if (TI)
    {
        TI = 0;//清中断标志
        //SUBF = data;//将要发送的数据放入SBUF中
        //do something
    }
    if (RI)
    {
        RI = 0;//清中断标志
        //data = SBUF;//读取SBUF中的数据
        //do something
    }
}

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

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

相关文章

电脑使用技巧:怎么清理C盘碎片?

在日常使用电脑的过程中,C盘作为系统盘,常常会因为各种文件、缓存、临时文件等的堆积而变得拥挤不堪。这不仅会降低电脑的运行速度,还可能导致系统不稳定。而磁盘碎片问题则是另一个影响电脑性能的重要因素。本文将详细介绍如何清理C盘碎片&a…

数据结构 ——— 二叉树的概念及结构

目录 二叉树的概念 特殊的二叉树 一、满二叉树 二、完全二叉树 二叉树的概念 二叉树树示意图: 从以上二叉树示意图可以看出: 二叉树每个节点的度不大于 2 ,那么整个二叉树的度也不大于 2 ,但是也不是每个节点都必须有 2 个…

什么样的职业适合参加TRIZ创新方法培训

当下,无论是科技巨头还是初创企业,甚至是传统行业,都在积极寻求创新的突破口,以期在激烈的市场竞争中脱颖而出。而在这场创新大潮中,TRIZ(发明问题解决理论)作为一种高效、系统的创新方法&#…

SQLark百灵连接——整合项目监控过程

关键词:SQL编写、数据查询、数据导入、达梦数据库、项目管理、信息透明 项目监控背景 作为新手项目经理的我,经常觉得哪儿哪儿都是问题,今天催这个,明天推那个,可就是什么事都推不动,谁都不配合。后来&…

Unity可视化Shader工具ASE介绍——自定义函数

阿赵的Unity可视化Shader工具ASE介绍目录   大家好,我是阿赵。   之前介绍过一些ASE的用法,发现漏了一个比较重要的,自定义函数的使用。这里补充一下。 一、 使用的场合 在使用ASE制作Shader的过程中,可能会遇到以下这些情况…

前端性能优化——缓存优化

前端性能优化可以从多个方面下手,例如加载性能优化、渲染性能优化、代码优化、缓存优化、性能监测和优化等方面下手,下面针对缓存优化分享一下优化思路。 浏览器缓存主要分为强缓存和协商缓存。强缓存命中时,浏览器直接从本地缓存中获取资源&…

Unity3D包管理bug某些版本Fbx Exporter插件无法搜索到的问题

这个问题是在使用unity的时候发现的 有些版本里没有Fbx Exporter插件也是没法搜到 经过测试,在package manager中开启Enable Preview Packages也没有用 这个插件在2020已经是正式版了,不需要再开启 后来发现可能是版本bug 需要手动开启 在工程的Pac…

03.DDD六边形架构

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 什么是依赖DDD四层架构六边形架构代码实现 想要详细了解六边形架构,可以看我之前的一篇文章。是对六边形架构原文的翻…

Android启动流程_Zygote阶段

前言 上一篇文档中我们描述了 Android 启动中的 init 启动部分,本片文档将会继续 Android 启动流程的逻辑,继续梳理 Zygote 部分功能。 说明框架 对于 Zygote 进程,要从以下框架说明: 第一点,编译,zygo…

最新AI软件部署,ChatGPT商业AI系统源码,支持GPT4.0+AI换脸+AI智能体GPTs应用+AI绘画+AI视频+文档分析

一、前言 SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式 AI B/C 端解决方案,AI大模型提问、AI绘画、专业版AI视频生成、文档分析、多模态识图理解、TTS & 语音识别对话、AI换脸、支持AI智能体应用(…

C++ | Leetcode C++题解之第514题自由之路

题目&#xff1a; 题解&#xff1a; class Solution { public:int findRotateSteps(string ring, string key) {int n ring.size(), m key.size();vector<int> pos[26];for (int i 0; i < n; i) {pos[ring[i] - a].push_back(i);}vector<vector<int>>…

联想笔记本电脑睡眠后打开黑屏解决方法

下载联想机器睡眠无法唤醒修复工具 下载地址&#xff1a;https://tools.lenovo.com.cn/exeTools/detail/id/233/rid/6182522.html 使用完后重启电脑&#xff0c;问题解决。

应用案例 | Panorama SCADA助力巴黎奥运会:保障赛事协调与安全

谈到2024年最受关注的体育盛事&#xff0c;巴黎奥运会无疑是焦点之一。作为全球瞩目的顶级赛事&#xff0c;它不仅汇集了来自世界各地的精英运动员&#xff0c;还点燃了全球观众的热情。然而&#xff0c;组织如此大规模的活动绝非易事。从大量游客通过公共交通涌入&#xff0c;…

Flux-IP-Adapter-V2版本发布,效果实测!是惊喜还是意外?

更多AI教程&#xff1a;AI教程_深度学习入门指南 - 站长素材 简介 XLAB团队发布了FLUX.1-dev模型的最新IP-Adapter V2版本。这是在之前IP-Adapter V1版本上的进一步升级。新版本的IP-Adapter模型在保持图像纵横比的同时&#xff0c;分别在512x512分辨率下训练了150k步&#x…

【计算机网络教程】课程 章节测试1 计算机网络概述

一. 单选题&#xff08;共16题&#xff09; 1 【单选题】以下关于TCP/IP参考模型缺点的描述中&#xff0c;错误的是&#xff08; &#xff09;。 A、在服务、接口与协议的区别上不很清楚 B、网络接口层本身并不是实际的一层 C、它不能区分数据链路和物理层 D、传输层对…

超出人类思维的「系统0」:AI正在创造一种新的思维方式吗?

在大众的认知中&#xff0c;人类的思维分为系统 1&#xff08;System 1&#xff0c;直觉的、快速的、无意识的、自动思考&#xff09;和系统 2&#xff08;System 2&#xff0c;有逻辑的、缓慢的、有意识的、计划和推理&#xff09;。 如今&#xff0c;一种不同于 System 1 和…

袋鼠云秋季发布会圆满落幕,AI驱动让生产力数智化

在当今时代&#xff0c;AI 的发展如汹涌浪潮&#xff0c;其速度之快超越了任何历史时期。它以前所未有的迅猛之势&#xff0c;渗入到各个领域的不同场景之中&#xff0c;悄然重塑着商业模式与人们的生活方式。 在 AI 逐渐成为企业基础属性的背景下&#xff0c;袋鼠云举办秋季发…

linux 高级 I/O

高级 I/O 1. 阻塞 I/O 与非阻塞 I/O2. 阻塞 I/O 所带来的困境3. 何为 I/O 多路复用以及原理select()函数介绍poll()函数介绍总结 4. 何为异步 I/O 以及原理5. 存储映射 I/O7. 文件加锁 1. 阻塞 I/O 与非阻塞 I/O 这里举个例子&#xff0c;譬如对于某些文件类型&#xff08;读管…

centos7配置keepalive+lvs

拓扑图 用户访问www.abc.com解析到10.4.7.8&#xff0c;防火墙做DNAT将访问10.4.7.8:80的请求转换到VIP 172.16.10.7:80&#xff0c;负载均衡器再将请求转发到后端web服务器。 实验环境 VIP&#xff1a;负载均衡服务器的虚拟ip地址 LB &#xff1a;负载均衡服务器 realserv…

【亚马逊云科技】Amazon Bedrock搭建AI服务

前言 大模型应用发展迅速&#xff0c;部署一套AI应用的需求也越来越多&#xff0c;从头部署花费时间太长&#xff0c;然而亚马逊科技全托管式生成式 AI 服务 Amazon Bedrock&#xff0c;Amazon Bedrock 简化了从基础模型到生成式AI应用构建的复杂流程&#xff0c;为客户铺设了…