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

2024-01-14 17:12
文章标签 特点 通信 51 串行 mcs

本文主要是介绍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完全相同,所不同的仅仅是波特率。

这篇关于MCS-51---串行通信的特点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605917

相关文章

便携式气象仪器的主要特点

TH-BQX9】便携式气象仪器,也称为便携式气象仪或便携式自动气象站,是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。以下是关于便携式气象仪器的详细介绍:   主要特点   高精度与多功能:便携式气象仪器能够采集多种气象参数,包括但不限于风速、风向、温度、湿度、气压等,部分高级型号还能监测雨量和辐射等。数据采集与存储:配备微电脑气象数据采集仪,具有实时时钟、数据存

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM