单片机串口收发字符数据的类型

2023-05-16

  今天在用51单片机进行串口收发数据的时候遇到了这样一个问题,上位机给单片机的字符数据是什么类型的,单片机又是怎样存储的?

串口中断如下

/* UART中断服务函数 */
void InterruptUART() interrupt 4
{
	if (RI)  //接收到字节
	{
  	   RI = 0;  //手动清零接收中断标志位
  	   table1[j] = SBUF;  //接收到的数据保存到接收字节变量中
	   if(table1[0] == 0x0D)
  	       f = 1;
       else 
		   f =0;
       table1[j] = table1[j]&0x0f;
	   j++;
	   flag1 = 1;	
								
    }
    else  //字节发送完毕
    {
       TI = 0;  //手动清零发送中断标志位
       FS_Bit = 0;
    }
} 

问题1:

单片机将接收到的数据放到SBUF中存储,但这个SBUF只能存储8位数据(1个字节),那么就有了第一个问题:如何接收多位数据?

答:我是定义了一个table1[]数组,将每个接收到的8位数据放到数组里,然后指针自加1,在另一个中断里判断一共接收到了几个数据(j起自加和计数作用),然后延时1s后,将接收到的每个元素输出(1s足够接收到几个字节的数据了)。

问题2

那么table1[]里的数据是什么类型的呢?

答:它是一个二进制数据,是接收到字节的二进制ascii码,如果再用SBUF发送出去,也是发送的二进制数据,不过上位机接收的时候自动转换成字节了。

问题三

如何将接收到的二进制ascii码进行十进制运算呢?

答:其实二进制与十进制计算方法、过程、结果都一样。但是用字符类型传给单片机的数字的二进制与对应十进制的二进制是不一样的,比如说上位机字符格式发送过来一个数据2,单片机接收到的二进制ascii码0011 0010,而十进制的2对应的二进制是 0000 0010,所以不能直接对字符格式的数字进行运算,所以我用了

table1[j] = table1[j]&0x0f;
将高四位都清0,与十进制的2对应起来,然后就可以进行运算了。(但是上位机发送一个大写字母R与字符2是一样的,因为R的ascii码是 0000 0010)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机串口收发字符数据的类型 的相关文章

随机推荐

  • java keytool导入和删除证书

    1 进入dos命令行 xff0c 进入目录C Program Files x86 Java jre6 lib security xff0c 2 导入命令 xff1a keytool import keystore 34 C Program
  • 如何获取shell函数的返回值及shell命令的返回值?

    1 获取shell函数调用的返回值 xff1a bin sh info cat jlb sh res 61 96 info 96 echo 34 state 34 echo 34 res 34 res 说明 xff1a res 61 96
  • Linux下TCP最大连接数受限问题

    一 文件数限制修改 1 用户级别 查看Linux系统用户最大打开文件限制 xff1a ulimit n 1024 1 vi etc security limits conf mysql soft nofile 10240 mysql har
  • Linux使用curl访问https站点时报错汇总

    每一种客户端在处理https的连接时都会使用不同的证书库 IE浏览器和FireFox浏览器都可以在本浏览器的控制面板中找到证书管理器 在证书管理器中可以自由添加 删除根证书 而Linux 的curl 使用的证书库在文件 etc pki tl
  • pkcs1与pkcs8格式RSA私钥互相转换

    1 PKCS1私钥生成 openssl genrsa out private key 1024 private key文件内容如下 xff1a BEGIN RSA PRIVATE KEY MIICXQIBAAKBgQDREk3uy4x9i4
  • spring mvc 配置总结

    1 spring mvc的配置文件 2 Spring Mvc 3 1 之后如何配置messageConverters 3 Spring aop 原理及各种应用场景
  • 【Latex】中插入图片(Excel和Visio绘制)不失真的方法

    一开始用Latex写论文不懂 xff0c 用Visio和Excel绘制图片之后直接用截图工具截取后存为 png格式之后就往Latex中插入 xff0c 结果图片严重失真 xff0c 后来问过师兄后得到大致的过程 xff0c 摸索后成功 xf
  • SSL证书类型

    按适用域名数量分类有 xff1a 通配符型SSL证书 万能型SSL证书 单域名SSL证书 多域名SSL证书 通配型SSL证书 xff1a 也称为泛域名证书 xff0c 可以同时适用于多个子域名 xff0c 可以匹配 domain com 万
  • Maven的pom.xml介绍

    6 1 简介 pom xml文件是 Maven进行工作的主要配置文件 在这个文件中我们可以配置 Maven项目的 groupId artifactId和 version等 Maven项目必须的元素 xff1b 可以配置 Maven项目需要使
  • 使用简单的wcf文件实现上传,下载文件到服务器

    wcf是微软开发出的用户数据通信的app接口 xff0c 在 net framework3 0中与wpf xff0c wf一同集成 xff0c 是 net框架的一部分 具体请参见点击打开链接 本文主要讲述了使用wcf服务契约来进行文件或者数
  • mysql添加用户和权限

    用户管理 mysql gt use mysql 查看 mysql gt select host user password from user 创建 mysql gt create user 用户名 IDENTIFIED by 39 用户密
  • MacBook Pro(M1)安装mysql

    1 下载 网址 xff1a mysql com 2 选择社区版本 3 MySQL Community Server 版本 兼容性说明 xff1a 适配 macOS 10 15 版本 xff0c 但上面有说明 xff0c 可运用于 Big S
  • MySQL进阶-监控、高可用

    MySQL监控 1 常见的监控方式 一般来说 xff0c 常见的监控方式主要有如下三种 xff1a 监控方式特点优点缺点工具 脚本自己编写工具或脚本 xff0c 适合初期机器很少的生产环境在企业初期可以快速满足监控需求后期部署和维护成本大商
  • Druid+Commons DBUtils基本使用

    Druid 1 jar包下载 xff1a https github com alibaba druid releases 2 导入jar包 2 1创建lib文件夹 xff0c 复制粘贴进去 2 2 2 3 3 创建配置文件 文件名称 xff
  • MAC安装maven及每次启动需要刷新bash_profile问题

    1 下载 网址 xff1a https maven apache org download cgi 2 解压安装 选择一个目录 示例 xff1a Users i18 apache maven 3 8 1 3 配置变量 vim span cl
  • win10解压安装mysql方法及遇见的问题(缺少MSVCR120.dll文件、服务无法启动)

    WIN10系统MYSQL的下载与安装详细教程 第一步 xff1a 下载 MySQL 下载地址 xff1a https dev mysql com downloads mysql 5 1 html downloads 具体过程如下 xff1a
  • 基于select函数实现的tcp简单服务器

    select 实现 tcp demo 回忆TCP的连接过程selectselect 的封装tcp类的封装程序流程 程序cli cpp 客户端建立连接SelectSvr hpp 服务器的头文件Tcpsvr hppmain cpp 主函数mak
  • 【odroid-xu3】 ODROID-XU3软件环境搭建记录

    原文链接 xff1a http blog csdn net aganlengzi article details 50036951 1 操作系统环境准备 我用的是Ubuntu12 04 xff0c 但是建议用更高的版本 按照android官
  • D435i相机首次开发与踩坑记录

    D435i相机首次开发与踩坑记录 介绍 配置完D435i相机的开发环境后开始尝试研究官方例程 xff0c 试着运行一些demo初入intel相机 开始的时候也是很头疼 xff0c 不知道如何下手 xff0c 看了众多博客后稍微有了一些眉目
  • 单片机串口收发字符数据的类型

    今天在用51单片机进行串口收发数据的时候遇到了这样一个问题 xff0c 上位机给单片机的字符数据是什么类型的 xff0c 单片机又是怎样存储的 xff1f 串口中断如下 UART中断服务函数 void InterruptUART inter