esp8266 at接收数据中断时间_C51编程18中断篇(串行通讯2)

2023-11-11

    MCS-51单片机内部有两个独立的接收与发送SBUF,接收SBUF不能发送,发送SBUF不能接收,它们共用一个地址(99H)。内部逻辑结构下图所示:

9fa1627e1be7d9a28ecbfc6411edf5c5.png

    在串行内部逻辑结构中可以看到,串行通信除了与SBUF有关外,还与串行口控制寄存器SCON(地址为98H)、定时器T1有关,此外还有一个寄存器PCON(地址为87H),该寄存器只有一位与串行通讯有关。

    下面了解下SCON寄存器的功能

        串行口控制寄存器SCON(地址为98H),复位初始值为0;寄存器可以位寻址。

a6df36a55e18f83706aa6c937c8e468c.png

     SM0与SM1的设置工作方式

9a47e5bc4be7464e5abbc34a279c101f.png

    工作方式0:8位的同步移位寄存器。

    (1)发送时,按照机器周期频率,将SBUF的里面的数据从低位开始一位一位移出去。发送完成后TI置1,向CPU请求中断

    (2)接收时,在满足REN =1 与RI = 0的条件下,按照机器周期频率,从RXD端口一位一位接收数据,接收完后RI = 1并向CPU请求中断,再次接收需要设置RI = 0;

    (3)波特率:波特率为时钟频率的1/12,固定不变即是波特率 = 机器周期。

    注:SM2的值一定是0

    工作方式1:

    在方式1下,串行口为波特率可调10位的通用异步接口UART,发送与接收一帧信息,包括1位的起始位0,8位数据位和1位的停止位1。

fe058755b72787930bc48c8a6f6145f8.png

    (1)发送时,数据从TXD引脚输出,当数据写入发送缓冲器SBUF后,启动发送器发送,当发送完一帧数据后,硬件将中断标志置1。方式1传送的波特率取决于定时器T1的溢出率与PCON中的SMOD位。

    (2)接收时,有REN置1允许接收,串行口采样RXD,当采样到1到0的跳变时,确认是起始信号“0”,开始接收帧数据。当RI =0且停止位为1时,RI = 1,否者信息丢失。

    (3)波特率取决于T1与PCON

    波特率 = T1溢出率*2SMOD/32

        T1工作在定时2方式,自动重装定时器的溢出率为:   

    T1溢出率 = fosc/(12*(256-X))        

    波特率 = ( fosc*2SMOD)/(32*12*(256-X))

    注:SM2主要用于多机通讯中,但是方式1上,也可以设置SM2的值,控制接受时,是否需要将停止位写入RB8。当SM2 = 0时,写入;SM2 =1时,不写入,这个功能作用不常用,方式1时按照默认SM2 = 0即可。

    工作方式2:

    在方式2下,串行口为11位的通用异步接口UART,发送与接收一帧信息,包括1位的起始位0,8位数据位、1位可编程位(奇偶校验)与1位的停止位1。

165e9c22b6f87e780f45dda884f3f86e.png

    (1)发送时,根据通讯协议软件设置TB8,然后将发送数据写入SBUF,则启动发送器。写SBUF指令除了将8位数据写入SBUF外,同时还将TB8装入发送移位寄存器第9位,并通知发送控制器进行数据发送。

    (2)接收时,当REN =1,允许串口接收数据,数据从TXD输入,接收11位数据。当接收器采样到RXD端负跳变,并判断起始位有效后,开始接收一帧数据。当接收器接收到9位数据后满足2条件,则接收数据有效。

(1) RI =0;

(2)SM=0或接收到第9位数据为1。

(3)波特率取决于PCON中的SMOD值,当SMOD =1时,波特率为时钟频率的1/64;当SMOD =1时,波特率为时钟频率的1/32。即是

    波特率 = fosc*2SMOD/64

    注:在方式2与方式3中,SM2表示是否设置为多机通讯。SM=0,不设置多机通讯;SM1 = 1,设置为多机通讯。

方式3:

   在方式3下,串行口为波特率可变的11位的通用异步接口UART,除波特率外方式3与方式2相同。 

波特率 = ( fosc*2SMOD)/(32*12*(256-X))

    注:为了数据的正确性,往往采样的时候只采样一次,这样就需要占一定的时间进行采样。设置SMOD实际上,设定采样率。当SMOD = 1时,采样率为16;当SMOD =0时,采样率为32。

总结:

    1)串口内部的有两个独立的SBUF,它们共用一个地址,发送SBUF只用发送,接收SBUF只能接收;

    2)无论是接收数据或者发送数据,数据从RXD端口接收或者TXD端口发送,数据位都是从低到高一位一位接收或者发送;

    3)MCS-51单片机中,UART有4种工作方式。

    工作方式1:8位同步移位寄存器,将发送SBUF数据移位输出,或者移位寄存器接收后,写入接收SBUF。

    工作方式2、3、4:均为协议的串行通讯方式,其中起始位为0,停止位为1,8位数据位,总共10位;

    工作方式3、4:还有在停止位前面还有一位奇偶校验位。

    工作方式1、3:是可变的波特率通讯方式,波特率由SMOD位与T1的溢出率决定,通常T1工作在定时器2方式下。

    工作方式4:波特率只有两个有SMOD位决定;

    4)为了数据的正确性,需要对一个信号进行多次采样,但一个机器周期只能采样一次,所以需要多个机器周期才能采样多次。这是为什么即即使在没有T1参与的情况下,波特率还是比较低的原因。

---------------------------------------------------------

如果觉得文章还不错,那就扫码关注吧!

da7cf90a92680c2e6ba53d002e2385bf.png

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

esp8266 at接收数据中断时间_C51编程18中断篇(串行通讯2) 的相关文章

  • Windows下小白安装Qt详细教程

    一 软件下载 官网下载地址 http download qt io 1 点击进入 2 archive 和 official releases 两个目录都有最新的 Qt 开发环境安装包 我们以 archive 目录里的内容为例来说明 点击进入
  • 太强大!发现一个数据分析老司机专用神器!

    去年秋招 字节跳动整体报录比降到了2 创造了150000人争3000岗位的盛况 今年909万毕业生再创新高 激烈程度可想而知 除了技术岗 大部分毕业生也瞄准了高薪高前景的数据分析师岗位 教育部关于高校毕业生就业工作通知 人才缺口 巨大 未来
  • 用python进行数据分析(一:数据理解)

    python作为当前主流的语言之一 他的功能是非常强大的 不论是在游戏行业还是数据分析行业还是软件开发啥的好像都可以用python 但作为一个数据分析师 并不需要用到他的全部功能 只是想要达到 能够用python完成数据分析工作 的效果来帮
  • 同步FIFO的verilog实现(2)——高位扩展法

    一 前言 在之前的文章中 我们介绍了同步FIFO的verilog的一种实现方法 计数法 其核心在于 在同步FIFO中 我们可以很容易的使用计数来判断FIFO中还剩下多少可读的数据 从而可以判断空 满 关于计数法实现同步FIFO的详细内容 请
  • logback 配置文件 XML 案例

    logback配置文件案例 1 实现功能 1 控制台输出日志 2 info warn error 三个级别的日志分文件输出 3 日志文件 按天 按文件大小 滚动保存 4 日志文件保存于 项目根目录下的 logs 目录下 2 具体配置
  • STM 32如何实现程序自加密

    在嵌入式应用开发中 应用开发完成后往往需要对芯片中的程序进行加密处理 用以保护程序安全 不至被竞争对手从芯片把程序固件考走 本节将给大学介绍一个如何实现程序自动给芯片加密功能 下面给大家介绍一个STM32 用程序给MCU加密码的方法 标准库
  • 解决stata安装外部命令报错cannot write in directory C:\Users\�ƿ���\ado\plus\_

    参考网址 https bbs pinggu org thread 10685955 1 1 html ado文件下没有plus文件夹 在do文件或命令行中输入以下三个命令 sysdir set PLUS D stata17 MP ado p
  • Search and Replace -- 搜索与替换的高级利器

    对于从事电脑无纸化办公拟文写作的朋友 随着文档的增多 要查找一个遗忘的文件犹如大海捞针 虽然Windows系统已有很强的搜索功能 但依然不能满足我们的要求 如Windows不能搜索WPS格式的文件 不能搜索数据库 而在第三方软件的帮助下便可
  • 【YOLO系列】YOLOv6论文超详细解读(翻译 +学习笔记)

    前言 YOLOv6 是美团视觉智能部研发的一款目标检测框架 致力于工业应用 论文题目是 YOLOv6 A Single Stage Object Detection Framework for Industrial Applications
  • Xilinx FPGA 学习笔记——时钟资源

    在Xilinx的FPGA中 时钟网络资源分为两大类 全局时钟资源和区域时钟资源 全局时钟资源是一种专用互连网络 它可以降低时钟歪斜 占空比失真和功耗 提高抖动容限 Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构 从而使全局时钟到达C
  • vue cli4.5.13项目兼容IE问题记录

    用脚手架安装项目后 IE遇到问题如下 一 报错1002 点击错误发现在socketjs client 办法 降低socketjs client 版本 npm install sockjs client 1 5 1 二 安装后 仍然白屏 按照
  • 数据搜索之二分查询

    数据搜索中 如果给定数据集是乱序的情况下一般我们使用顺序搜索按位查询是最常用的方法 但是一旦数据是顺序的 二分法则能大大减少数据搜索的工作量 尤其在几十万甚至上亿的数据量情况下 它的效率就能大大的体现 二分法的思想是通过每次把数据集所在小区
  • html怎样去除超链接的样式_前端从入门到精通

    HTML 标题 标题 Heading 是通过 h1 h6 等标签进行定义的 h1 定义最大的标题 h6 定义最小的标题 注释 浏览器会自动地在标题的前后添加空行 注释 默认情况下 HTML 会自动地在块级元素前后添加一个额外的空行 比如段落
  • 基于卷积神经网络(cnn)的手写数字识别(PyTorch)

    目录 1 1 卷积神经网络简介 1 2 神经网络 1 2 1 神经元模型 1 2 2 神经网络模型 1 3 卷积神经网络 1 3 1卷积的概念 1 3 2 卷积的计算过程 1 3 3 感受野 1 3 4 步长 1 3 5 输出特征尺寸计算
  • mac塔防闯关游戏:气球塔防6 for Mac(BloonsTD6)v38.3中文原生版

    气球塔防6 是由Ninja Kiwi制作的一款塔防游戏 是该系列作品的第六代 游戏于2018年11月发布 在游戏中 玩家需要使用各种防御塔和特殊技能 防止气球带着猴子进入终点 并摧毁猴子们的城镇 游戏中有多种不同类型的气球和猴子 每个气球和
  • 系统重装系列(三)

    系统重装系列 三 接着上期的一系列操作完成后 接下来是我对于系统设置调整 使得系统更加简洁好用 上期回顾 系统重装系列 二 打酱油的杯具的博客 CSDN博客 任务栏 这是刚刚到手的任务栏 个人喜欢小图标 并且要去掉搜索框和右边更新的这个无卵
  • javaJDBC——连接mysql数据库

    java连接数据库的五种方法 最好的效率最高的是第五种 package com webtest connection import java io IOException import java io InputStream import
  • thinkphp:在解决join多表联查的时候,解决关联表默认加上前缀的问题

    问题 由上图看出正确的应该是表so lines all 而现在变为了fa so line all 故表不存在 初始代码 data db table wip jobs all gt alias a 设置wip jobs all的别名 gt j
  • vue el-form-item :rules动态校验实现

    1 form表单中

随机推荐

  • 【Transformer】15、PoolFormer: MetaFormer is Actually What You Need for Vision

    文章目录 一 背景和动机 二 方法 2 1 MetaFormer 2 2 PoolFormer 三 效果 四 代码 论文链接 https arxiv org pdf 2111 11418 pdf 代码链接 https github com
  • 写Python爬虫的准备工作

    写Python爬虫的准备工作 学习Python也有一段时间了 前段时间开始搞爬虫 刚开始真是头再铁也撞出血来 不过经过一段时间的摸索 总是是基本入门了 以后的路只能慢慢爬了 今天就来总结下开始爬虫之前 需要做什么准备工作 同时也是作为第一篇
  • 如何找到优秀的软件外包开发公司

    软件项目是一个复杂的系统工程 需要全面考虑 顶层设计 底层细化的方式 找公司前还是要自己懂一些技术 不懂就找一个懂技术的朋友帮着把关一下 否则很可能做不好项目 目前创业的人多 开发公司也很多 当你自己不懂的时候很难选择 北京木奇移动技术有限
  • 声音合集

    系统声音 package com ahsoft tachymeterapp utils import android media Ringtone import android media RingtoneManager import an
  • 计算机网络期末复习

    资料篇 计算机网络谢希仁版简答题题库 百度文库 习题篇 计算机网络简答题总结 百度文库 计算机网络第5章试题 百度文库 HCNE题库官网最新完整第篇传输层协议原理 附答案详解 百度文库 我又来了 想好好说一下这个复习题 you know关于
  • 哈希表(散列表)详解

    今天的每一秒都是珍贵的 因为它永远不会再次出现 作者 不能再留遗憾了 专栏 Java学习 本文章主要内容 深入理解哈希表 散列表 散列函数的几种构造方法以及解决哈希冲突的方法 文章目录 前言 什么是哈希表 哈希表相对于其他的查找结构有什么优
  • npm报错Error: ENOENT: no such file or directory, mkdir

    报错如下 解决方法 检查C Users Administrator目录下的 npmrc是否有问题 笔者的电脑上面没有F盘 删掉这一行后直接就能用了 最后 排错不易 如果问题没解决可以看这个文章 https blog csdn net kel
  • Faster R-CNN/R-FCN里mAP的计算过程(voc_eval.py解析)

    Faster R CNN R FCN在github上的python源码用mAP来度量模型的性能 mAP是各类别AP的平均 而各类别AP值是该类别precision prec 对该类别recall rec 的积分得到的 即PR曲线下面积 关于
  • C 语言使用Libcurl /curl 发送数据 (可以设置http header)

    1 环境Windows 2 依赖库文件 头文件
  • swoole-redis连接池的问题总结

    答题小程序遇到的问题 1 使用swoole的redis池爆满之后 无法调试 也不会报错 但是使用strace调试代码跟踪会出现 出现原因如下 1 代码出错 2 连接池爆满 解决方案 使用下面插件作为连接池 因为他有 一个定时关闭redis链
  • 【Teradata】windows部署安装Teradata数据库(附虚拟机扩展包)

    一 teradata 官网地址 点击此处 注 下载 需要科学上网 安装包链接 Teradata17 10版本 二 解压压缩包 注 第一个是Teradata for ODBC 第二个是Teradata虚拟机扩展包 三 安装 3 1打开VMwa
  • AlexNet imagenet classification with deep convolutional neural networks 阅读笔记

    NIPS 2012 imagenet classification with deep convolutional neural networks Paper 该网络有60 000 000个参数 650 000个神经元 包含5个卷积层 有一
  • 几分钟带你快速了解MyBatis框架理论知识!

    1 Mybatis框架是什么 mybatis是一款非常优秀的持久化框架 也是一个半ORM 对象关系映射 框架 mybatis框架它支持sql语句的定制化 存储过程和高级映射 mybatis避免了JDBC代码和手动设置参数和获取结果集 myb
  • 7个步骤让PC网站自动适配手机网页

    传统的网站如何完成向移动设备的快速转型 通过移动适配技术可以实现 切图网是国内首家基于web技术服务的公司 而移动适配主要通过底层的web技术开发手段来完成 下面切图网将从技术角度来告诉你通过7个步骤来完成一个PC网站向移动设备的跳跃 1允
  • Stereo Matching (双目)立体匹配 & 视差图 & 双目图片进行立体匹配获取深度图进行三维重建的步骤​​​​​​​

    立体匹配技术就是通过匹配两幅或者多幅图像来获得视差 disparity 图 通过立体匹配可以获得深度 进行深度估计 立体匹配算法通常由四个部分组成 包括 匹配代价计算 代价聚合 视差计算和视差优化 双目立体匹配一直是双目视觉的研究热点 双目
  • GDAL-3.3.2编译

    前言 我的环境是win10 vs2019 gdal3 3 2 编译步骤 1 GDAL下载 1 GDAL下载地址 2 GEOS Geometry Engine Open Source 下载地址 3 PROJ8下载地址 注意 1 geos官网主
  • 【Xilinx AX7103 MicroBalze学习笔记4】MicroBlaze 按键中断实验

    目录 实验任务 实验框图 硬件设计 Vivado部分 Block Design 搭建 软件设计 SDK部分 代码部分 上板验证 往期系列博客 实验任务 通过 AXI GPIO 检测按键状态产生中断信号 中断控制器检测到中断后 给处理器发送中
  • 【C语言】—— 实现简易四则运算

    实现简易四则运算表达式 前言 在我们使用计算器进行简单的加减乘除运算的时候 需要注意很多问题 最重要的是乘除法的算数优先级和加减法是不同的 如果在一连串连续输入的时候 我们要如何做到正确解答问题呢 解题思路 在面对这个问题的时候 我首先想到
  • 埋点SDK原理与实现

    文章目录 埋点分析 一 埋点是什么 二 为什么要埋点 三 怎么做埋点 举例Google Analytics服务提供的主要功能 四 埋点的实现原理 1 用户使用方式 1 全局注册 2 手动埋点 3 无埋点 2 实现原理 1 如
  • esp8266 at接收数据中断时间_C51编程18中断篇(串行通讯2)

    MCS 51单片机内部有两个独立的接收与发送SBUF 接收SBUF不能发送 发送SBUF不能接收 它们共用一个地址 99H 内部逻辑结构下图所示 在串行内部逻辑结构中可以看到 串行通信除了与SBUF有关外 还与串行口控制寄存器SCON 地址