串行口控制寄存器(SCON)(转载自百度文库)

article/2025/10/24 21:25:41

SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为98H,位地址为98H9FH。寄存器的内容及位地址表示如下: 

位地址 

9FH 

9EH 

9DH 

9CH 

9BH 

9AH 

99H 

98H 

位符号 

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

 各位的说明如下:

1)  SM0 、SM1——串行口工作方式选择位

其状态组合和对应工作方式为:

  SM0  SM1                     工作方式

0          0                  方式0

0          1                  方式1

1          0                  方式2

1            1                  方式3

在通信中 按传送方式可分为三种:单工,半双工,全双工。
按通信方式可分为两种:异步通信,同步通信。
串行口的工作方式有四种:
SM0,SM1为选择位。
当这两位分别

为0 0时,工作方式为0,即8位移位寄存器方式 波特率 f/12
为0 1 时,工作方式为1,即8位异步通信接口 可变
为1 0时,工作方式为2,即9位异步通信接口 f/64,f/32
为1 1时,工作方式为3,即9位异步通信接口 可变

2)  SM2——允许方式2、3的多机通信控制位

在方式2和3中,若SM2=1且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若SM2=0,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请求。

方式0时,SM2必须置0

3)  REN——允许接收位

REN=0      禁止接收数据

REN=1      允许接收数据

4)  TB8——发送数据位8

在方式23时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置

5)  RB8——接收数据位8

在方式2、3时,RB8是接收的9位数据

在方式1时,RB8是接收的停止位

在方式0时,不使用RB8

6)  TI——发送中断标志位

在方式0时,发送完第8位数据后,该位由硬件置位

在其它方式下,于发送停止位之,由硬件置位

因此,TI=1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。

TI由软件清0

7)  RI——接收中断标志位

在方式0时,接收完第8位数据后,该位由硬件置位

在其它方式下,于接收到停止位之,该位由硬件置位

因此,RI=1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。

RI由软件清0

SCON:串行口控制寄存器

寄存器地址98H,位寻址9FH98H

位地址

9F

9E

9D

9C

9B

9A

99

98

位符号

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0SM1:串行口工作方式选择位

SM2:多机通信控制位

REN:允许/禁止串行口接收的控制位

TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。

RB8:在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式1中,RB8收到的是停止位,在方式0中不用。

TI——串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置1在转向中断服务程序后,用软件清0

RI——串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置1在转向中断服务程序后,用软件清0

51单片机的简介——串行口、SCON

 51单片机有一个全双工串行通讯口它即可作为UART(Universal Asynchronous Receiver/Transmitter),也可作为一个同步移位寄存器。而且作为UART时,其具有多机通讯能力。

51单片机的串行口由发送控制、接收控制、波特率输入管理和发送/接收缓冲区SBUF(地址为99H)组成。SBUF作为发送和接收缓冲区其实际是分开的两个器件,数据不会相互覆盖,但在对其寻址时都是99H,51单片机会根据读或者写指令操作相应的器件。

 站在汇编角度来看,51单片机的串行口通讯操作体现为累加器Acc(地址E0H)和发送/接收缓冲区SBUF之间的数据传递。当我们要发送数据时,对串行口完成初始化设置后,数据由累加器A传入SBUF,然后在发送控制器的控制下组成帧结构,并自动从TXD端口发出,发送结束后置位TI(TI是特殊功能寄存器SCON的可独立寻址位,参见SCON介绍),如果要继续发送就在指令中将TI清0。接收数据时,相当于对串口完成初始化设置后,数据由SBUF传入累加器Acc,在置位允许位(即设置SCON的独立寻址位REN为1)后才开始进行串行接收操作,在接收控制器控制下,通过移位寄存器将串行数据输入SBUF,接收结束后将RI(SCON中可独立寻址位)置位,最后将数据送累加器Acc。

  特殊功能寄存器SCON是串行口控制寄存器,用于存放串行口的控制和状态信息,其地址为98H,具有位寻址功能,其各位的结构如下图所示:

其中各个位的功能及含义如下:

  SM0、SM1:串行口工作方式选择位,其组合含义如下图所示:

SM2:多机通讯控制位。在方式2和方式3中用于多机通讯控制,在方式2、方式3的接收状态中,若SM2=1,当接收到的第9位(同时系统将第9位值赋予RB8)为0时,舍弃接收到的数据,RI置0;若第9位为1时,将接收到的数据送入接收SBUF中,并将RI置1;而对于方式1,接收到有效的停止位时,将RI置1。对于方式0,SM2应该置0。

    REN:允许接收位。REN置1时允许接收数据,REN由指令置位或者复位
    TB8:第9位发送的数据。多机通讯时(即方式2、方式3)TB8表示主机发送的是地址还是数据,TB8=0表示发送的是数据,TB8=1表示发送的是地址。TB8由指令置位或者复位。
    RB8:第9位接收的数据。用来存储接收到的第9位数据,用于标明接收到的数据特征或者用于校验。对于方式0,不使用RB8。
    TI:发送中断标志,由硬件设置,由软件清0。方式0串行发送完8位数据后置位,其它方式串行发送停止位后置位。
    RI:接收中断标志,由硬件设置,由软件清0。方式0接收完8位数据后置位,其它方式接收到停止位时置位。
    51单片机借用了PCON的D7位作为串行波特率系数SMOD控制位,PCON不可位寻址,其地址为87H,当SMOD=1时,波特率加倍。SMOD在PCON中的位置如下图所示:


http://chatgpt.dhexx.cn/article/rNZ1xvSu.shtml

相关文章

51/STC12单片机SCON,PCON,TMOD寄存器定义及功能

串口工作方式寄存器SCON 串口工作方式寄存器SCON,SCON(Serial Control Register)串行口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。SCON既可以字节寻址,也可以位寻址,其字节地址…

TMOD、SCON、PCON寄存器的配置

TMOD控制寄存器 TMOD是定时器、计数器模式控制寄存器,它是一个逐位定义的8为寄存器,但只能使用字节寻址。 其各位是: 由上图我们就可以看出,这个寄存器控制了两个定时器/计数器 寄存器的高四位控制定时器1,低四位…

JDK 高版本没有VisualVM

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,提供强大的分析能力,对 Java 应用程序做性能分析和调优。 在高版本JDK(大于1.8或后期更新的1.8版本)中已经不会再自动集成 VisualVM 1、下载&#xff…

visualvm下载和安装

visualvm下载和安装 官网下载地址: https://visualvm.github.io/index.html 电脑登录不上,可以使用手机打开, 附带我下载好的visualvm2.0.3版本的网盘地址:(适用于Jdk1.8) 链接:https://pan…

VisualVM的配置和使用

下载VisualVM:官网下载页面 解压缩后进入到etc目录 修改visualvm.conf配置文件 需要注意: 我当时使用的visualVM是2.0.3这个版本的只支持jdk8以前的,我本地配置的环境变量是jdk14,但是又不想配置jdk8作为环境变量,需…

Mac 系统下VisualVM的安装

1、preferences----plugins搜索插件visualvm 插件,点击下载。 2、下载完成后,在idea上配置visualvm参数:preferences----other settings----visualvm launcher其中第一个参数是在jdk中visualvm.exe;第二个参数是jdk的位置 3、按理说配置成功后重启idea,…

VisualVM 使用心得

JDK中有个好用的工具“VisualVM”可以实时可视化的查看到java程序内存变化情况,对于理解GC和java内存管理还是有很大帮助的,以前看论坛看帖子讲到java内存管理真是各说纷纭啊!有人说“JVM的内存分为两块堆和栈”,还有人说"JV…

Mac上安装VisualVM

首先去下载 官网: https://visualvm.github.io/index.html然后访达找到应用程序,右键VisualVM显示包内容,找到: /Applications/VisualVM.app/Contents/Resources/visualvm/etc 下面的visualvm.conf文件 修改它 在文件最下面加…

Mac版VisualVM启动提示You are running VisualVM using Java Runtime Environment ( JRE ) . Please use

今天更新了VisualVM 2.0.5,启动的时候提示找不到jdk引用,于是到包内部的visualvm.conf中修改jdk引用地址。 visualvm.conf的路径 /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf 将visualvm_jdkhome修改为类似以下的路径就…

VisualVM工具的下载及插件安装

文章目录 一.前言二.下载安装三.插件安装 一.前言 VisualVM作为GitHub的独立工具分发,并作为GraalVM的可选组件分发。两者都是具有相同功能的相同位。独立工具在任何兼容的JDK上运行,捆绑工具配置为使用主机GraalVM运行。 VisualVM也作为Java VisualVM…

IDEA-集成VisualVM插件,启动Java VisualVM

起因: 我忘了我之前起程序去关联Java VisualVM是咋配的了今天百度搜的时候意外发现idea可以直接起,只需要安装VisualVM插件然后启动Java VisualVM 安装VisualVM插件 路径: File->Setting->Plugins 操作:在marketplace里搜关键词VisualVM,然后点…

VisualVM【实践 01】工具VisualVM下载使用及插件Visual GC示例说明HashMap初始化容量initialCapacity的影响(源码及visualvm_215.zip分享)

VisualVM【官网】很难下载,懂得都懂 😢,简单叙述一下下载的过程: 使用PC各种浏览器失败【❌】使用Android手机多个浏览器失败【❌】使用IOS手机多个浏览器,仅有Safari浏览器成功【🆗】 大家可以体会一下&…

深入理解Java虚拟机——VisualVM工具的下载及安装

目录 一、VisualVM工具的概述二、VisualVM工具的下载地址如下:三、VisualVM工具的安装步骤: 一、VisualVM工具的概述 VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序…

vs = VirtualService

VirtualService 您是正确的。我混淆了Kubernetes中的资源类型。"vs"是Istio服务网格中的资源类型,代表Virtual Service(虚拟服务)。 Virtual Service是Istio中的一种路由规则,它定义了如何将请求路由到服务的不同版本…

深入理解java虚拟机(十一)VisualVM:多合-故障处理工具

文章目录 前言一、VisualVM兼容范围与插件安装二、生成、浏览堆转储快照三、分析程序性能四、BTrace动态日志跟踪结尾 前言 VisualVM在JDK 6 Update 7中首次发布,直到JRockit Mission Control与OracleJDK的融合工作完成之前,它都曾是Oracle主力推动的多…

visualvm安装并且讲解说明

Jvisualvm安装并且讲解说明 1.visualvm安装使用教程 1.visualvm安装使用教程 注意:JDK 1.8之前是自带的,我的是jdk11所以需要手动安装 安装软件地址: 链接:https://pan.baidu.com/s/1JEWpF6eyBCAVNo5rBEa08Q 提取码:8y37 安装教程 1.下载对应…

性能分析利器总结一《VisualVM》

VisualVM 随着JDK7而出现,位于JDK根目录下的bin目录下。运行环境需JDK1.6及以上,能监控JDK1.4以上版本的应用程序。 相比JConsole,感觉功能更强大,且可集成各类插件,使其更强大。Jconsole算是VisualVM的子集吧。另外…

VM 和 VC

一、vm 1、Vue的实例对象,以后简称vm。 (1) vm的隐式原型属性指向Vue的原型对象。 (2) VueComponent的原型对象的隐式原型属性指向Vue的原型对象。 二、vc 1、组件本质: 组件其实是一个名为VueComponent的构造函数,且不是程序员定义的&am…

杂记十五:VisualVM使用教程

一、插件下载 1.安装jdk并启动jvisualvm.exe 2.插件安装 点击已下载,第一次开启的时候已下载里面是空的,需要点击添加插件把已经下载的插件添加到已下载中。 如何下载插件? 下载地址:https://visualvm.github.io/pluginscente…

【visual studio】VsVim 2022

看起來很方便使用是VS的擴展和兼容VsVim配置教程VsVim使用教程(以及简要vim介绍)四种模式:normal,insert,visual,command True 那么有一个专门的命令模式的输入框 这个框还是很有必要的 vs的标签页之间切换 用ctl w 即可。我用的是小写的…