51 USART数据收发

1.0 USART实现单个数据收发

串口启动之前需要对串口进行初始化,主要是设置产生波特率的定时器1,使用串口的工作方式还是中断的工作方式具体的配置步骤如下所示。

注:

1: 确定TMOD (定时器模式寄存器) 确定定时器的工作模式

2:计算定时器的初始值 TH1 或者TL1的初始值(这里是定时器的初始值计算涉及到波特率)

3:启动定时器TR

4: 确定串型口控制SCON(串口控制寄存器,用于对串口进行控制)

5:串行口在中断的工作方式时需要进行中断的设置,(IE 或者是IP寄存器)

【串口实现一个字节的数据收发】

51 中寄存器的定义(是否可以位寻址)

可以位寻址:数据的相关引脚系统总有定义

参考数据手册

SCON 串口控制寄存器----工作方式我们选中的工作模式为模式 1 ,REN允许单片机接收控制位这个位置为 1。


【串口方式1收发数据ASCII码值对应表】

注:文本模式下,存储的是ASCII的值,文本模式下发送过去的数据显示的是ASCII对应的值,也就是在文本模式下存储的是ASCII的值。

注:HEX---16进制模式下收到的才是发送过去的数据,也就是发送1 发送过去的就是01...


USART 单个数据收发程序

 【串口向电脑发送数据】

 

TI 的意思就是发送中断的意思:表示发送完了,TI 标志为设置为1,然后申请中断,处理事情,并且需要手动软件复位

RI 的意思表示的是接收中断标志位。表示数据接收完毕可以接收, RI = 1, 接收完毕后需要软件手动清 0

#include <REGX52.H>
#include <intrins.h>
#define uint  unsigned int 
#define uchar unsigned char 
#define beep P2_3
#define dula P2_6
#define wela P2_7uchar temp;
uint num,num1,dis,bm;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void DelayMs(uint c);
void Display(uint shu);
void Init();void main ()
{Init();while(1){if(RI==1){RI=0;temp=SBUF;}if(temp==2){beep=0;}if(temp==3){beep=1;}if(temp==4){/*进入之后temp的值赋值为0*/temp=0;SBUF=0xaa;}Display(temp);}
}void Init()
{TMOD=0x21;//配置定时器0是工作模式1,定时器1是工作模式2TH0=(65536-46296)/256;TL0=(65536-46296)%256;//装初值TH1=0xfd;//bps为9600TL1=0xfd;//装初值TR1=1;//启动定时器1SCON=0x50;//01010000
}void Int0() interrupt 0
{beep=~beep;
}void Time0() interrupt 1
{TH0=(65536-46296)/256;TL0=(65536-46296)%256;//装初值num++;
}void Time1() interrupt 3
{TH1=(65536-45296)/256;TL1=(65536-45296)%256;//装初值num1++;
}void DelayMs(uint c)
{uint a,b;for(a=c;a>0;a--)for(b=115;b>0;b--);
}
void Display(uint shu)
{wela=1;P0=0xfe;//11111110 打开第一个数码管的位选11000000wela=0;P0=0;dula=1;P0=table[shu/100];//显示0dula=0;DelayMs(2);	wela=1;P0=0xfd;//11111101 打开第2个数码管的位选11000000wela=0;P0=0;dula=1;P0=table[shu/10%10];//显示0dula=0;DelayMs(2);wela=1;P0=0xfb;//11111011 打开第3个数码管的位选11000000wela=0;P0=0;dula=1;P0=table[shu%10];//显示0dula=0;DelayMs(2);
}

2.0 keil工具实用小技巧

自定义注释


...

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

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

相关文章

2021年9月电子学会青少年软件编程 中小学生Python编程等级考试三级真题解析(判断题)

2021年9月Python编程等级考试三级真题解析 判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 26、readline()执行结果为字符串&#xff0c;readlines()执行结果为列表 答案&#xff1a;对 考点分析&#xff1a;考查文件读操作&#xff0c;readli…

省去烦恼!轻松实现一台电脑登录多个微信号的秘诀揭秘!

你知道如何在同一台电脑上登录多个微信号&#xff0c;并实现聚合聊天吗&#xff1f; 今天&#xff0c;我将分享一个多微管理神器——个微管理系统&#xff0c;帮助你解决这一问题&#xff01; 1、多号同时登录&#xff0c;聚合聊天 无论你有多少个微信号&#xff0c;都可以一…

yolov8通过训练完成的模型生成图片热力图--论文需要

源代码来自于网络 使用pytorch_grad_cam&#xff0c;对特定图片生成热力图结果。 安装热力图工具 pip install pytorch_grad_cam pip install grad-cam# get_params中的参数&#xff1a; # weight&#xff1a; # 模型权重文件&#xff0c;代码默认是yolov8m.pt # c…

【机器学习】集成学习方法:Bagging与Boosting的应用与优势

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、集成学习的定义二、Bagging方法1. 随机森林&#xff08;Random Forest&#xff09;2. 其他Bagging方法 二、Boosting方法1. 梯度提升树&#xff08;Gradient Boosting Machine, GBM&#xff09;解释GBM的基本原理和…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 特惠寿司(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 特惠寿司(100分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

9. 文本三剑客之awk

文章目录 9.1 什么是awk9.2 awk命令格式9.3 awk执行流程11.4 行与列11.4.1 取行11.4.2 取列 9.1 什么是awk 虽然sed编辑器是非常方便自动修改文本文件的工具&#xff0c;但其也有自身的限制。通常你需要一个用来处理文件中的数据的更高级工具&#xff0c;它能提供一个类编程环…

【二】【动态规划NEW】91. 解码方法,62. 不同路径,63. 不同路径 II

91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法&#xff…

利用74HC165实现8路并行输入口的扩展

代码&#xff1a; #include <mega16.h>// Declare your global variables here #define hc165_clk PORTB.0 #define hc165_lp PORTB.1 #define hc165_out PINB.2unsigned char read_hc165(void) {unsigned char data0,i,temp0x80;hc165_lp0;hc165_lp1; for(i0;i<7;i)…

Git 基础操作(一)

Git 基础操作 配置Git 安装完Git后&#xff0c;首先要做的事情是设置你的 用户名 和 e-mail 地址。这样在你向仓库提交代码的时候&#xff0c;就知道是谁提交的&#xff0c;以及提交人的联系方式。 配置用户名和邮箱 使用git config [--global] user.name "你的名字&qu…

碳中和研究院OLED透明屏2x2整机项目方案

一、项目背景 随着全球气候变化和环境问题的日益严重&#xff0c;碳中和成为各国政府和企业的重要议题。为了响应这一趋势&#xff0c;黑龙江碳中和研究院计划引入先进的OLED透明屏技术&#xff0c;以展示其研究成果和碳中和理念。本项目旨在为该研究院提供一套高质量的OLED透明…

干部选拔任用的六条原则

在干部选拔任用的过程中&#xff0c;为确保选拔出的干部能够真正符合党和人民的期望&#xff0c;必须遵循以下六条原则&#xff1a; 一、党管干部原则 党管干部原则是指在整个干部选拔任用过程中&#xff0c;党要发挥总揽全局、协调各方的领导作用&#xff0c;确保选拔出的干…

pytorch 加权CE_loss实现(语义分割中的类不平衡使用)

加权CE_loss和BCE_loss稍有不同 1.标签为long类型&#xff0c;BCE标签为float类型 2.当reduction为mean时计算每个像素点的损失的平均&#xff0c;BCE除以像素数得到平均值&#xff0c;CE除以像素对应的权重之和得到平均值。 参数配置torch.nn.CrossEntropyLoss(weightNone,…

算法01 递推算法及相关问题详解【C++实现】

目录 递推的概念 训练&#xff1a;斐波那契数列 解析 参考代码 训练&#xff1a;上台阶 参考代码 训练&#xff1a;信封 解析 参考代码 递推的概念 递推是一种处理问题的重要方法。 递推通过对问题的分析&#xff0c;找到问题相邻项之间的关系&#xff08;递推式&a…

【机器学习】LightGBM: 优化机器学习的高效梯度提升决策树

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 LightGBM: 优化机器学习的高效梯度提升决策树引言一、LightGBM概览二、核心技术…

Go语言结构体内嵌接口

前言 在golang中&#xff0c;结构体内嵌结构体&#xff0c;接口内嵌接口都很常见&#xff0c;但是结构体内嵌接口很少见。它是做什么用的呢&#xff1f; 当我们需要重写实现了某个接口的结构体的(该接口)的部分方法&#xff0c;可以使用结构体内嵌接口。 作用 继承赋值给接口…

激活和禁用Hierarchy面板上的物体

1、准备工作&#xff1a; (1) 在HIerarchy上添加待隐藏/显示的物体&#xff0c;名字自取。如&#xff1a;endImage (2) 在Inspector面板&#xff0c;该物体的名称前取消勾选&#xff08;隐藏&#xff09; (3) 在HIerarchy上添加按钮&#xff0c;名字自取。如&#xff1a;tip…

chatgpt的命令词

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

汽车级TPSI2140QDWQRQ1隔离式固态继电器,TMUX6136PWR、TMUX1109PWR、TMUX1133PWR模拟开关与多路复用器(参数)

1、TPSI2140-Q1 是一款隔离式固态继电器&#xff0c;专为高电压汽车和工业应用而设计。 TPSI2140-Q1 与 TI 具有高可靠性的电容隔离技术和内部背对背 MOSFET 整合在一起&#xff0c;形成了一款完全集成式解决方案&#xff0c;无需次级侧电源。 该器件的初级侧仅由 9mA 的输入电…

CSS实现经典打字小游戏《生死时速》

&#x1f33b; 前言 CSS 中有这样一个模块&#xff1a;Motion Path 运动模块&#xff0c;它可以使元素按照自定义的路径进行移动。本文将为你讲解这个模块属性的使用&#xff0c;并且利用它实现我小时候电脑课经常玩的一个打字游戏&#xff1a;金山打字的《生死时速》。 &…

僵尸网络相关

个人电脑被植入木马之后&#xff0c;就会主动的连接被黑客控制的这个C&C服务器&#xff0c;然后这个服务器就会给被植入木马的这个电脑发指令&#xff0c;让他探测在他的局域网内还有没有其他的电脑了&#xff0c;如果有那么就继续感染同局域网的其他病毒&#xff0c;黑客就…