MCS-51---串行通信的特点

目录

一.同步通信和异步通信

1.异步通信

2.同步通信

二.串行通信的方式

1.单工

2.半双工

3.全双工

三.串行通信的速率

四.MCS-51单片机结构

五.串行口的控制

1.串行口控制寄存器(SCON)

2.电源控制寄存器(PCON)

六.波特率的设计

七.串行口的工作方式

1.方式0

2.方式1

3.方式2与方式3


一.同步通信和异步通信

串行通信有两种基本通信方式,即同步通信和异步通信。

1.异步通信

在异步通信中,数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式。
一般也称为顿格式。在格式中,一个字符由 4 个部分组成:起始位、数据位、奇偶校验和停止位。首先是一个起始位“0”表示字符的开始;然后是 5~8 位数据,规定低位在前高位在后:接下来是奇偶校验位(该位可省略);最后是一个停止位“1”,用以表示字符的结束,停止位可以是1位、1.5 位、2位,不同的计算机规定有所不同。如图所示为11位的帧格式

由于异步通信每传送一帧有固定格式,通信双方只需按约定的帧格式来发送和接收数据,所以,硬件结构比较简单;此外,它还能利用奇偶校验位检测错误,因此,这种通信方式应用比较广泛。

2.同步通信

同步通信中,在数据开始传送前用同步字符来指示,同步字符通常为 1~2个,数据传
送由时钟系统实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。同步传送时,字符与字符之间没有间隙,不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,同步传送格式如图所示。

同步通信中数据块传送时去掉了字符开始和结束的标志,因而其速度高于异步传送,但这种通信方式对硬件的结构要求比较高。

二.串行通信的方式

在串行通信中,数据是在两机之间进行传送的。按照数据传送的方向,串行通信可以分为单工制式、半双工制式和全双工制式。

1.单工

单工制式的数据传送是单向的。如图所示,通信双方中一方固定为发送端,另一方固定为接收端。单工制式的串行通信,只需要一条数据线。

2.半双工

在半双工制式下,甲乙两机之间只有一个通信回路,接收和发送不能同时进行,只能分时接收和发送,即在任一时刻只能由两机中的一方发送数据,另一方接收数据。因而两机之间只需一条数据线即可,如图所示

3.全双工

在全双工制式下,甲乙两机之间的数据发送和接收可以同时进行,全双工制式的串行通信必须使用两根数据线,如图所示。不管哪种形式的串行通信,两机之间均应有共地线。

三.串行通信的速率

传送速率是指数据传送的速度。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据的位数来表示,称之为波特率(baud/s)。例如数据传送速率是120个bit/s.每个字符由1个起始位、8个数据位和1个停位构成,则其传送波特率为:

10X120=1200baud/s

异步通信的传送速度一般在 50~19200baud/s 之间,常用于计算机低速终端以及双机或多机之间的通信等。在波特率选定之后,对于设计者来说,就是如何得到能满足波特率要求的发送时钟脉冲和接收时钟脉冲。

四.MCS-51单片机结构

MCS-51 的行口是一个可编程的全双工串行通信接口,通过软件编程可以用作通用异步接收和发送器,也可以用作同步移位寄存器。其格式有 8 位、10位和 11 位,并能设置各种波特率,使用灵活方便。

MCS-51单片机的串行口结构框图如图所示。由图可见,它主要由两个数据缓冲器SBUF和一个输入移位寄存器,以及一个串行口控制寄存器 SCON 等组成。MCS-51串行口能以全双工方式通信,即两个缓冲器可以同时接收和发送数据,但是对于单片机内部总线来说,发送和接收是不能同时进行的,所以给这两个缓冲器指定相同的名称(SBUF),且占用同一个地址99H

串行发送与接收的速率与移位脉冲同步。MCS-51常用定时器T1(方式2)作为串行通信的波特率发生器,T1 的溢出率经 2 分频(或不分频)后,再经 16 分频作为行发送或接收的移位脉冲。移位脉冲的频率即是串行通信的波特率。

此外,在接收缓冲器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现的帧重叠错误。在前一个字符从接收缓冲器SBUF取走之前,当前字符即开始串行的方式被接收到移位寄存器。但是,在当前字符接收完毕之后,如果前一个字符还未被读取时,前一个字符就会被当前字符覆盖。与接收数据情况不同,在发送数据时,由于CPU是主动的,不会发生重叠错误,因此发送电路不需要双缓冲结构,以保持最大的传送速率。
串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的当向SBUF写数据(执行“MOV SBUF,A”)时,即开始启动一个字符的发送,发送完毕置发送中断标志位(TI=1)。在满足接收中断标志位 RI=0的条件下,只要置接收使能位 REN=1,就会启动一个字符的接收过程。一个字符接收完毕,自动置接收中断标志位(RI=1),同时将移位寄存器中所接收的字符移送到接收缓冲器SBUF 中。执行“MOV A ,SBUF”时,便由接收缓冲器将接收的字符送到累加器A中。

五.串行口的控制

MCS-51的串行口是可编程接口,通过对两个特殊功能寄存器SCON和PCON的初始化编程,可以实现对串行口的控制。

1.串行口控制寄存器(SCON)

SCON 是一个可位寻址的专用寄存器,用于串行数据通信的控制。其单元地址为98H,位地址为98H~9FH。其内容及位地址表示如下:

•SM0、SM1:串行口工作方式选择位。

其状态组合所对应的工作方式如下:

SM2:多机通信控制位。

因多机通信是在方式2和方式3下进行,因此SM2主要用于方式2和方式3。当串行口以方式2或方式3接收时,若SM2=1,只有当接收到的第九位数据(RB8)为1才将接收到的前8位数据送入 SBUF,并置接收中断标志 (RI=1),产生中断请求;否则,将接收到的前 8 位数据丢弃。而当 SM2-0 时,则不论第九位数据 (RB8)为0还是1,都将前8位数据装入 SBUF 中,并产生中断请求。在方式0中,SM2必须为0。

•REN:接收使能位。
REN位用于对串行口数据的接收进行控制,该位由软件置位或清除。当REN=0时禁止接收;REN=1时,允许接收。

•TB8:发送数据的第九位。

在方式 2和方式 3中,根据需要由软件进行置位和复位。双机通信时该位可作奇校验位:在多机通信中可作为区别地址或数据的标识位。一般约定 TB8-1 时为地址帧,TB8=0时为数据帧。

•RB8:接收数据的第九位。

在方式2和方式3中,RB8 存放接收到的第九位数据。其功能类似于 TB8(例如可能是奇偶位,或是地址/数据帧标识)
•TI:发送中断标志位。
在方式0中,发送完 8 位数据后,由硬件置位;在其他方式中,在发送停止位之前由硬件置位。TI=1时,表示发送结束,其状态既可申请中断,也可供软件查询使用TI位必须由软件清0。
RI:接收中断标志位。
在方式0时,接收完8位数据后,由硬件置位;在其他方式中,在接收停止位的中间由硬件置位。RI=1时,表示接收结束,其状态既可申请中断,也可供软件查询使用RI位必须由软件清0。

2.电源控制寄存器(PCON)

PCON 寄存器主要是为 CHMOS 型单片机的电源控制而设的专用寄存器,单元地址为87H,其格式如下:

在HMOS单片机中,该寄存器中除最高位之外,其他位都是虚设的。最高位 SMOD是串行口波特率倍增位。当SMOD=1 时,串行口波特率加倍。系统复位时,SMOD=0。

六.波特率的设计

在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。通过软件对串行口编程可约定为4种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器1的溢出率来控制。

1.方式0的波特率
在方式0中,每个机器周期接收或发送一位数据,因此波特率的数值固定为时钟频率数值(f_{osc})的1/12,且不受SMOD的影响。

2.方式2的波特率

串行口方式2的波特率取决于PCON中SMOD的值,当SMOD-0时,波特率为/的1/64:若SMOD=1,则波特率为f_{osc}的 1/32,即:

3.方式1和方式3的波特率
方式1和方式3的波特率由定时器T1的溢出率与SMOD的值决定,即:

常用的波特率初值:

七.串行口的工作方式

根据需要,MCS-51单片机的串行口可设置四种工作方式,可有8 位、10位或11 位帧格式。

1.方式0

在方式0下,串行口是作为同步移位寄存器使用。这时以RXD(P3.0)端作为数据移入的入口和出口,而由TXD(P3.1)端提供移位脉冲。移位数据的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后。这种方式常用于扩展I/O口。

2.方式1

工作方式1真正用于串行发送和接收,为 10 位通用异步接口。TXD(P3.1)用于发选数据,RXD(P3.0)用于接收数据。接收或发送一帧数据的格式为:1位起始位,8位数据位和1位停止位,其波特率可调。
发送时,数据从TXD(P3.1)引脚输出,当数据写入发送缓冲器SBUF时,就启动发送。发送完一帧数据后,由硬件将TI置1,并申请中断,通知CPU可以发送下一个数据。

接收时,由软件使 REN 置1允许接收,串行口采样脚 RXD(P3.0)。当采样到由1至0的跳变时,确认是起始位“0”,就开始接收一帧数据。当停止位来到之后将停止位送入RB8位,由硬件将RI置1,并申请中断,通知CPU从SBUF取走接收到的一个数据。

3.方式2与方式3

在工作方式2下,串行口为11 位格式的异步通信接口。接收或发送一数据的格式为:1个起始位,8位数据位,1位可编程位和1位停止位。波特率与SMOD有关。
发送前,先根据通信协议由软件设置 TB8(如作奇偶校验位或地址/数据标志位),然后将要发送的数据写入SBUF即能启动发送。“写SBUF”指令把8位数据装入SBUF的同时,还把TB8装入发送移位寄存器的第9位上,然后从TXD(P3.1)端输出,一帧数据发送完后,由硬件将TI置1,并申请中断。
接收时,先将 REN 置1,使串行口处于允许接收状态,同时还要将RI清0在演是此条件的前提下,再根据SM2的状态和所接收到的 RB8 的状态决定行口在数据到来后是否使RI置1,并申请中断,接收信息。
SM2=0时,不管RB8为0还是为1,RI都置1,接收发来的信息,并申请中断。

SM2=1,且RB8为1时,表示在多机通信的状态下,接收的信息为地址帧,此时RI置1,串行口接收发来的地址,并申请中断。

SM2=1,且RB8为0时,表示接收的信息为数据帧,但不是发给本从机的,此时RI不置1,因而SBUF中所接收的数据将丢失。
方式3同样是11位为一帧的串行通信方式,其通信过程与方式2完全相同,所不同的仅仅是波特率。

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

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

相关文章

DM数据库安装注意事项

数据库安装注意事项 一、安装前 一些参数需要在数据库创建实例前找用户确认。 参数名参数掩码参数值备注数据页大小PAGE_SIZE32数据文件使用的页大小(缺省使用8K,建议默认:32),可以为 4K、8K、16K 或 32K 之一,选择的页大小越大…

k8s存储卷之动态

动态pv需要两个组件 1、卷插件,k8s本身支持的动态pv创建不包含NFS,需要声明和安装一个外部插件 Provisioner 存储分配器,动态创建pv,然后根据pvc的请求自动绑定和使用 2、StorageClass,用来定义pv的属性&#xff0c…

选择和训练模型(Machine Learning 研习之十一)

当您看到本文标题时,不禁感叹,总算是到了训练模型这一节了。 是啊,在之前的文章中,我们对数据进行了探索,以及对一个训练集和一个测试集进行了采样,也编写了一个预处理管道来自动清理,准备您的数…

大数据赋能电竞出海企业发展

近几年电竞行业发展迅速,我国单2022年新增近4万家电竞相关企业,竞争十分激烈。中国电竞市场规模在全球占比19%左右,海外有巨大的增量市场,特别是东南亚、中南亚和拉丁美洲是电竞市场增长最快的地区,在2020至2025年期间…

C#,求最长回文字符串的马拉车(Manacher)算法的源代码

一、回文字符串(Palindromic String) 回文字符串(Palindromic String)是指前、后向读起来完全相同的字符串。 回文字符串除了答题似乎没有什么用处 :P 二、求解思路 求解字符串的回文子串的基本思路: 1、遍历每个位…

HTML---CSS-引入样式表和选择器

CSS : Cascading Style Sheet 层叠式样式表 HTML 用于控制网页的结构&#xff0c;CSS则用于控制网页的外观&#xff0c;想要做出美观好看的网页&#xff0c;CSS是必须的 引入外部样式表&#xff1a; 它的属性 rel 和 type是固定的 语法&#xff1a; <link rel"styles…

16 SysTick—系统定时器

文章目录 16.0 前言16.1 SysTick 简介16.2 SysTick 寄存器介绍16.2.1 CTRL 控制及状态寄存器16.2.2 RELOAD 重载数值寄存器16.2.3 Current当前数值寄存器16.2.4 CALRB 校准值寄存器16.3 SysTick 定时实验16.3.1 编程要点16.3.2 代码分析16.3.2.1 SysTick 配置库函数16.3.2.2 配…

音频编辑软件:Studio One 6 中文

Studio One 6是一款功能强大的数字音乐制作软件&#xff0c;为用户提供一站式音乐制作解决方案。它具有直观的界面和强大的音频录制、编辑、混音和制作功能&#xff0c;支持虚拟乐器、效果器和第三方插件&#xff0c;可帮助用户实现高质量的音乐创作和制作。同时&#xff0c;St…

Java基础之虚拟机

1、前言 本篇基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。 Java 被设计成允许应用程序可以运…

格密码基础:SIS问题的定义与理解

目录 一. 介绍 二. SIS问题定义 2.1 直观理解 2.2 数学定义 2.3 基本性质 三. SIS与q-ary格 四. SIS问题的推广 五. Hermite标准型 六. 小结 一. 介绍 short interger solution problem短整数解问题&#xff0c;简称SIS问题。 1996年&#xff0c;Ajtai首次提出SIS问…

【数据结构】排序算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f38f;排序的定义 &#x1f38f;排序的稳定性 &#x1f4cc;稳定性的定义 &#x1f4cc;稳定性的意义 &#x1f38f;内排序与外排序 &#x1f38f;八大内排…

GitHub图床搭建

1 准备Github账号 如果没有Github账号需要先在官网注册一个账号 2 创建仓库 在github上创建一个仓库&#xff0c;随便一个普通的仓库就行&#xff0c;选择公共仓库 3 github token获取 github token创建方式可以参考下面的方式&#xff1a; https://www.xichangyou.com/6…

c/c++中static的用法

概述 static&#xff1a; 作为c/c的关键字之一&#xff0c;具有多种含义和应用&#xff0c;static 关键字可用于声明变量、函数、类数据成员和类函数。默认情况下&#xff0c;在所有块的外部定义的对象或变量具有静态持续时间和外部链接。 静态持续时间意味着&#xff0c;在程…

MT1138-MT1150总结

1. 判断闰年方法 year%40&&year%400&#xff01;0||year%4000 #include<bits/stdc.h> using namespace std;int day(int year,int mouth){if(mouth1||mouth3||mouth5||mouth7||mouth8||mouth10||mouth12){return 31;}else if(mouth4||mouth6||mouth9||mouth11)…

python使用贪心算法求最大整数问题

对于使用贪心算法的一个比较经典的问题&#xff0c;主要是为了解决最大整数的拼接问题&#xff0c;如果给定一个列表&#xff0c;这个列表中所包括的是一些非负整数&#xff0c;如果对这些整数进行组合&#xff0c;怎样才能组合出一个最大的整数&#xff0c;这里要注意一个问题…

1.2MATLAB数据类型和常用函数

MATLAB数据类型 数据类型表示范围整型 无符号整数8位无符号整数00000000~11111111 &#xff08;0~-1&#xff09;16位无符号整数32位无符号整数64位无符号整数带符号整数8位带符号整数10000000~01111111 (~)最左边的1表示符号负号16位带符号整数32位带符号整数64位带符号整数浮…

【C++】内联函数

前言 在C语言中&#xff0c;我们学习过宏的用法。宏通常被用于进行简单的文本替换来执行一系列的操作&#xff0c;比如一些简单的运算。使用宏可以避免函数调用时建立栈帧的开销&#xff0c;提高程序的性能。我们首先来写一个实现加法功能的宏&#xff1a; #define ADD(x, y)…

物理学如何推动生成式 AI 的发展

一、说明 许多尖端的生成式 AI 模型都受到物理学概念的启发。在本指南中&#xff0c;我们将从高层次上了解物理学如何推动人工智能的进步。不同的领域经常交叉授粉重要概念&#xff0c;这有助于推动其进步。数学概念为物理学的进步奠定了基础;物理学中的概念经常启发经济学的框…

紫外加速老化试热冲击试验箱

紫外加速老化试热冲击试验箱是用于测试产品在高低温环境下的适应性以及性能表现的实验设备。其功能特点主要包括以下几个方面&#xff1a; 1. 温度控制&#xff1a;冷热冲击试验箱能够提供高温、低温以及常温的测试环境&#xff0c;并且可以快速地实现温度的转换和控制。这使得…

高效办公:如何通过在文件名称右边添加关键字提升工作效率

在繁忙的办公环境中&#xff0c;经常要处理大量的文件和资料。那如何管理和查找这些文件呢&#xff0c;常见的方法有在文件名称右边添加关键字。下面来看云炫文件管理器如何通过在文件名称右边添加关键字来提升工作效率。 在文件名称右边添加关键字前后效果图。 文件名批量添加…