基于STC12C5A60S2系列1T 8051单片机串口通信信应用

基于STC12C5A60S2系列1T 8051单片机串口通信应用

  • STC12C5A60S2系列1T 8051单片机管脚图
  • STC12C5A60S2系列1T 8051单片机串口通信介绍
  • STC12C5A60S2系列1T 8051单片机串口通信的结构
  • 基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能寄存器列表
    • 基于STC12C5A60S2系列1T 8051单片机串口通信用到的特殊功能寄存器
      • STC12C5A60S2系列1T 8051单片机辅助寄存器AUXR
      • STC12C5A60S2系列1T 8051单片机辅助寄存器AUXR1
      • 串口1控制寄存器SCON
      • 串口电源控制寄存器PCON
      • 串口数据缓冲寄存器SBUF
      • 串口辅助寄存器AUXR
      • 串口中断寄存器
  • 基于STC12C5A60S2系列1T 8051单片机串口1通信工作模式
    • 串口1通信模式0
    • 串口1通信模式1
    • 串口1通信模式2
    • 串口1通信模式3
  • 串口通信波特率设置
  • 基于STC12C5A60S2系列1T 8051单片机通过串口通信接收计算机用串口助手发送的数据并返回给计算机串口助手显示出来

STC12C5A60S2系列1T 8051单片机管脚图

在这里插入图片描述在这里插入图片描述# STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置在这里插入图片描述# STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍在这里插入图片描述在这里插入图片描述

STC12C5A60S2系列1T 8051单片机串口通信介绍

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

STC12C5A60S2系列1T 8051单片机串口通信的结构

基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能寄存器列表

在这里插入图片描述

基于STC12C5A60S2系列1T 8051单片机串口通信用到的特殊功能寄存器

STC12C5A60S2系列1T 8051单片机辅助寄存器AUXR

在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信类型、波特率

STC12C5A60S2系列1T 8051单片机辅助寄存器AUXR1

在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信引脚切换

串口1控制寄存器SCON

在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信以下功能
(1)、设置串口通信工作模式
(2)、设置串口方式2或方式3多机通信
(3)、设置串口通信允许接收
(4)、设置串口通信在方式2或方式3下发送第9位数据
(5)、设置串口通信通信在方式2或方式3下接收第9位数据
(6)、设置串口通信发送中断请求
(7)、设置串口通信接收中断请求

串口电源控制寄存器PCON

在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信以下功能
(1)、设置串口通信波特率选择
(2)、设置串口通信帧错误检测有效控制

串口数据缓冲寄存器SBUF

在这里插入图片描述在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信发送或接收数据

串口辅助寄存器AUXR

在这里插入图片描述在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信类型、波特率

串口中断寄存器

在这里插入图片描述
作用:用来设置STC12C5A60S2系列1T 8051单片机串口通信中断允许、中断优先级

基于STC12C5A60S2系列1T 8051单片机串口1通信工作模式

串口1通信模式0

在这里插入图片描述

串口1通信模式1

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

串口1通信模式2

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

串口1通信模式3

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

串口通信波特率设置

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

基于STC12C5A60S2系列1T 8051单片机通过串口通信接收计算机用串口助手发送的数据并返回给计算机串口助手显示出来

#include <stc12c5a60s2.h>
#include <uart.h>
#define uchar unsigned char//自定义无符号字符型为uchar
#define uint unsigned int//自定义无符号整数型为uint 
bit ReceiveDataFlag;//声明收到数据标志位变量
uchar ReceiveData;//声明收到数据变量
/*****关于8051系列单片机定时器溢出率、波特率和定时器初值(定时计数初值)之间计算的知识点*****/
/****
一、定时器溢出率计算公式
1、定时器溢出率:定时器每秒溢出的次数
2、定时器溢出率计算公式表
    定时方式           分频方式                      公式
方式1:16位定时器  12分频(即12T 默认值)  Ft=晶振频率/12/(65536-定时器初值)
方式2:8位定时器   12分频(即12T 默认值)  Ft=晶振频率/12/(256-定时器初值)
方式1:16位定时器      1分频(即1T)      Ft=晶振频率/1/(65536-定时器初值)
方式2:8位定时器       1分频(即1T)      Ft=晶振频率/1/(256-定时器初值)
二、波特率计算公式
1、波特率:每秒传输二进制位数的多少
2、波特率计算公式表
    定时方式             分频方式                        公式
方式1:16位定时器T1  12分频(即12T 默认值)  波特率=晶振频率/12/(65536-定时器初值)/4
方式2:8位定时器T1   12分频(即12T 默认值)  波特率=晶振频率/12/(256-定时器初值)*2^SMOD/32
方式1:16位定时器T2  12分频(即12T 默认值)  波特率=晶振频率/12/(65536-定时器初值)/4
方式1:16位定时器T1      1分频(即1T)      波特率=晶振频率/1/(65536-定时器初值)/4
方式2:8位定时器T1       1分频(即1T)      波特率=晶振频率/1/(256-定时器初值)*2^SMOD/32
方式1:16位定时器T2      1分频(即1T)      波特率=晶振频率/1/(65536-定时器初值)/4
三、根据波特率计算定时器初值(定时器定时计数)
    定时方式             分频方式                        公式
方式1:16位定时器T1  12分频(即12T 默认值)  定时器初值(定时计数)=65536-晶振频率/(48*波特率)
方式2:8位定时器T1   12分频(即12T 默认值)  定时器初值(定时计数)=256-晶振频率*2^SMOD/(384*波特率)
方式1:16位定时器T2  12分频(即12T 默认值)  定时器初值(定时计数)=65536-晶振频率/(48*波特率)
方式1:16位定时器T1      1分频(即1T)      定时器初值(定时计数)=65536-晶振频率/(4*波特率)
方式2:8位定时器T1       1分频(即1T)      定时器初值(定时计数)=256-晶振频率*2^SMOD/(32*波特率)
方式1:16位定时器T2      1分频(即1T)      定时器初值(定时计数)=65536-晶振频率/(4*波特率)
*****/
 void Uart1Init()//串行口1工作模式1的8位串行口波特率可变初始化函数 波特率为9600bps 晶振为22.1184MHz
{
  AUXR = 0x00;//设定定时器1的12分频定时作为串行口1的波特率发生器
  PCON &= 0x7f;//波特率不加倍
  SCON = 0x50;//工作模式1的8位串行口波特率可变
  TMOD &= 0x0f;//定时器/计数器工作模式清0
  TMOD |= 0x20;//设定定时器/计数器为定时器 工作模式为8位自动重装定时器1模式2
  TH1 = 0xfa;//设定定时器1高八位初值
  TL1 = 0xfa;//设定定时器1低八位初值
  ET1 = 0;//禁止定时器1中断
  ES = 1;//允许串行口1中断
  EA = 1;//开总中断
  TR1 = 1;//打开定时器1
 }
 void PortChange()//端口切换函数
{
  AUXR1 &= 0xf3;//单片机P1端口切换到单片机P4端口
  AUXR1 |= 0x04;//设定ADRJ=1
 }
 void PortModeSet()//端口模式设置函数
{
  P0M1 = 0x00;
  P0M0 = 0x00;
  P1M1 = 0x00;
  P1M0 = 0x00;
  P2M1 = 0x00;
  P2M0 = 0x00;
  P3M1 = 0x00;
  P3M0 = 0x00;
  P4M1 = 0x00;
  P4M0 = 0x00;
 }
 void main()//主函数
{
  PortModeSet();//端口模式设置函数
  Uart1Init();//串行口1工作模式1的8位串行口波特率可变初始化函数 波特率为9600bps 晶振为22.1184MHz
  PortChange();//端口切换函数
  while(1)//主循环
 {
   
  }
 }
 void Uart1() interrup 4//串口1通信中断函数
{
  if(RI)//判断单片机串行口数据缓存器是否接收到数据
 {
   ReceiveData = SBUF;//读取单片机串行口数据缓存器中的数据赋给接收数据变量 即单片机串行口缓存寄存器通过串行口通信接收计算机用串口助手发送来的数据
   RI = 0;//单片机串行口接收数据标志位清0
   SBUF = ReceiveData;//把接收数据变量包含的数据赋给单片机串行口数据缓存器 即单片机通过串行口通信把来自从单片机SPI数据寄存器发送来的数据发送给计算机串口助手显示出来
   if(TI == 0)//等待单片机串行口发送完数据
  {
    TI = 0;//单片机串行口发完数据标志位清0
   }
  }
 }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于DS1302时钟液晶12864显示2路闹钟仿真及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS1302采集年月日时分秒送到液晶12864显示。 3、按键年月日时分秒&#xff0c;两路闹钟。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 uchar clock_time[6] {0X00,0X59,0X23,0X09,0X…

【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

火星加载WMTS服务

这是正常的加载瓦片 http://192.168.1.23:8008/geoserver/mars3d/gwc/service/wmts?tilematrixEPSG%3A4326%3A7&layermars3d%3Abuffer&style&tilerow46&tilecol197&tilematrixsetEPSG%3A4326&formatimage%2Fpng&serviceWMTS&version1.0.0&…

ENVI IDL:如何基于气象站点数据进行反距离权重插值?

01 前言 仅仅练习&#xff0c;大可使用ArcGIS或者已经封装好的python模块进行插值&#xff0c;此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程&#xff0c;从而更深刻的理解IDL的使用和插值的理解。 02 函数说明 2.1 Read_CSV()函数 官方语法如下&#xff1a…

国企业务变革-管理变革-IT支撑

&#xff08;1&#xff09;业务变革 国家-国资委-央国企这条链&#xff0c;有一主一副两个战略嘱托&#xff1a; 一个是&#xff1a;做大&#xff0c;并且做强-自主可控产业链供应链。 一个是&#xff1a;支撑国家一带一路战略落地 一、做大&#xff0c;做强-自主可控产业链供应…

常见面试题-分布式锁

Redisson 分布式锁&#xff1f;在项目中哪里使用&#xff1f;多久会进行释放&#xff1f;如何加强一个分布式锁&#xff1f; 答&#xff1a; 什么时候需要使用分布式锁呢&#xff1f; 在分布式的场景下&#xff0c;使用 Java 的单机锁并不可以保证多个应用的同时操作共享资源…

影响金融软件开发价格的因素有哪些?

随着科技的发展&#xff0c;金融行业逐渐向数字化和信息化转型&#xff0c;在这个过程中&#xff0c;金融软件开发成为了重要的支撑&#xff0c;然而&#xff0c;金融软件开发的价格是一个复杂的问题&#xff0c;受到多种因素的影响&#xff0c;本文将详细解析影响金融软件开发…

【Nginx40】Nginx学习:动静分离与日志分割

Nginx学习&#xff1a;动静分离与日志分割 放轻松放轻松&#xff0c;最后两篇文章学习的内容是比较轻松的。首先&#xff0c;我们来看看 Nginx 动静分离的概念&#xff0c;然后再看看怎么为 Nginx 做日志分割。内容都很简单&#xff0c;完全不需要有任何的压力。 动静分离 动静…

win下安卓打包指南

win下安卓打包指南 0、缘起 换了台电脑竟然忘了怎么打包&#xff0c;还好有笔记&#xff0c;用软件打包也挺好&#xff0c;但是我感觉用 命令行 更有操作感&#xff0c;分享下。 1、下载并配置apktool&#xff08;放在C://Windows无需配置环境变量&#xff0c;需要java环境&…

JVM虚拟机:垃圾回收器之Parallel Old(老年代)

本文重点 本文将学习老年代的另外一种垃圾回收器Parallel Old(PO)&#xff0c;这是一种用于老年代的并行化垃圾回收器&#xff0c;它使用标记整理算法进行垃圾回收。 历史 在1.6之前&#xff0c;新生代使用Parallel Scavenge只能搭配老年代的Serial Old收集器&#xff0c;而…

入选《人工智能领域内容榜》

入选《人工智能领域内容榜》第 23名 C# OpenCvSharp DNN HybridNets 同时处理车辆检测、可驾驶区域分割、车道线分割-CSDN博客

比亚迪推动启动电池无铅化 车主有福了

时间过得很快&#xff0c;又到了立冬&#xff0c;意味着冬季已经开始。此时的北方已经下起了大雪&#xff0c;即便是艳阳高照的粤北山区&#xff0c;早晚也出现了较大的温差。笔者不禁想起此前做二手车时期的尴尬场面——三年以上的老车&#xff0c;尤其是没有更换过启动电池的…

【解决方案】pytion 运行时提示 import psutil ModuleNotFoundError: No module named ‘psutil‘

报错原因分析 import psutil ModuleNotFoundError: No module named psutil报错原因分析 当前环境pytion中缺少了psutil包&#xff0c;使用pip命令进行安装 解决方案 pip install psutil

土壤含水量的计算

土壤含水量的计算 土壤水分的表示方法 一般所说的土壤水分&#xff0c;实际上是指用烘干法在105-110摄氏度温度下能从土壤中被驱逐出来的水。土壤水分含量即土壤含水量&#xff0c;它是指土壤中所含有的水分的数量。土壤含水量可以用不同的方法表示&#xff0c;最常用的表示方…

34 Feign最佳实践

2.4.2.抽取方式 将Feign的Client抽取为独立模块&#xff0c;并且把接口有关的POJO、默认的Feign配置都放到这个模块中&#xff0c;提供给所有消费者使用。 例如&#xff0c;将UserClient、User、Feign的默认配置都抽取到一个feign-api包中&#xff0c;所有微服务引用该依赖包…

【Java0基础学Java第八颗】 -- 继承与多态 -- 多态

8.继承与多态 8.2 多态8.2.1 多态的概念8.2.2 多态实现条件8.2.3 重写8.2.4 向上转型和向下转型8.2.5 向下转型8.2.6 多态的优缺点8.2.7 避免在构造方法中调用重写的方法 8.2 多态 8.2.1 多态的概念 通俗来说就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当…

华为ensp:为vlan配置ip

配置对应vlan的ip vlan1 interface Vlanif 1 进入vlan1 ip address 192.168.1.254 24配置IP为192.168.1.254 子网掩码为24位 这样就配置上ip了 vlan2 interface Vlanif 2 ip address 192.168.2.254 24 vlan3 interface Vlanif 3 ip address 192.168.3.254 24 查看结果 …

[蓝桥杯复盘] 第 3 场双周赛20231111

[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…

为什么要学习去使用云服务器,外网 IP能干什么,MAC使用Termius连接阿里云服务器。保姆级教学

目录 引言 可能有人想问为什么要学习云服务器&#xff1f; &#xff08;获取Linux环境&#xff0c;获得外网IP) 二、安装教程 引言 可能有人想问为什么要学习云服务器&#xff1f; &#xff08;获取Linux环境&#xff0c;获得外网IP) 1.虚拟机&#xff08;下策&#xff09; …

【教3妹学编程-算法题】765. 情侣牵手

3妹&#xff1a;2哥2哥&#xff0c;你看到新闻了吗&#xff1f;襄阳健桥医院院长 公然“贩卖出生证明”&#xff0c; 真是太胆大包天了吧。 2哥 : 我也看到新闻了&#xff0c;7人被采取刑事强制措施。 就应该好好查查他们&#xff0c; 一查到底&#xff01; 3妹&#xff1a;真的…