51单片机 串口

article/2025/10/14 12:28:31

串口说白了,就是初始化后,用中断接收发送字符而已。

TXD 是 80C51 单片机的P3.1口,RXD 是80C51 单片机的 P3.0口

T1 溢出率 是定时器1的溢出率 ,SMOD是发送速率倍频的16分频,T1每溢出一次发送一位,每次发送完后TI申请中断,就是串口每次发送完一个字节去申请一个中断,每接受完一个字节它也要申请一次中断。接受完了通过移位寄存器SBUF 取走。发送也用SBUF。

SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接受/发送控制以及设置状态标志:

串行口控制寄存器SCON

它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H(它是一个字节),其各位定义如下表:

D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0、SM1:串行口工作方式选择位,其定义如下:

SM0、SM1

 工作方式

 功能描述

 波特率

 0 0

 方式0

 8位移位寄存器

 Fosc/12

 0 1

 方式1

 10位UART

 可变

 1 0

 方式2

 11位UART

Fosc/64或fosc/32

 1 1

 方式3

 11位UART

 可变

UART为异步传输。因此一般用方式1了,方式23是9/11位的,不常用的。而真正实用的,用串口实现串行通信的是方式1。在方式1时,只有开中断允许标志位和接收到数据后,才会申请中断,单片机才会响应中断。

严格来说,51单片机的串口方式0,并不是用于串口通信的,只用于在RXD,TXD引脚上接有74LS164,串入/并出,或74LS165,并入串出。也就是只能与串行芯片配合使用的。串口方式0是同步移位工作模式,波特率是固定的,没法改变波特率。一般用于串转并或并转串的应用中。到时候再用就好了。

REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。

TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。(是最后一位,多用来进行校验吧)

RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。

TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。

RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。

串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。复位时SCON所有位都清0.

51单片机SBUF意思是SBUF串行口数据缓冲寄存器,分为输入和输出,但使用zhi时用同一个名字。比如MOV SBUF,A(是输出dao),MOV A,SBUF(是输入)。SBUF既是接收缓冲器又是发送缓冲器,同一时间只能为一种,要么接收,要么发送。a=SBUF是把接收缓冲器中的数据复制给a。SBUF=a是把a中的数据复制给发送缓冲器。通过读写缓冲器SBUF实现数据收发功能。

SBUF简介:

SBUF全称serial data buffer,中文名称“串行数据缓冲器”。

这个重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据。

99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,99H表示接收SBUF。

串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器。

SBUF在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。

 

异步通信

异步通信数据格式一般为字符格式

一个字符一个字符地传输,每个字符一位一位的传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符间没有固定的间隔要求。每一个字符的前面都有一位起始位(低电平),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后一位或一位半或两位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平,这样就保证了起始位开始处有一个下跳沿。

同步通信(了解即可)

同步通信就比如说是老师发作业本,约定学习委员来取作业本。建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步,而且传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符之间不留间隙,即保持位同步关系,也保持字符同步关系。

同步通信使用的数据格式根据采用的控制规程(通信双方就如何交换信息所建立的一些规定和过程称为通信控制规程),可分为面向字符型和面向位型两种,面向字符型数据格式又有单同步,双同步,和外同步之分。三个同步方式均以2个字节的冗余检验码CRC作为一帧信息的结束。

单同步:发送方先发送一个同步字符,再传送数据块,接收方检测到同步字符后接收数据

双同步:发送方先传送2个同步字符,再传送数据块,接收方检测到同步字符后接收数据;
外同步:用一条专用线来传送同步字符,以实现收发双方同步操作同步通信中,在数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端与接收端的同步,我们使用QQ的文件传输功能就可以看做是一个同步通信的例子,首先传文件的双方必须说好一个传文件的时间,如果双方有一个不在线上,就不能传输。其次,发送方发送文件命令后,接收方要确认是否接收,这个就是建立文件传输的过程,一旦传输开始,所有文件数据必须连续的传输过去,任何中断都将导致传输失败。

根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如常见的:

UART(串行异步通信接口)

USB(通用串行总线接口)

I2C(集成电路间的串行总线)

SPI(串行外设总线)

485总线、CAN总线接口等。

这个就是RS232

假设数据传送的速率是120字符/s,波特率即为1200 b/s。每一位的时间即为1/1200。

P3.0,3.1是默认的串口管脚, P3.6,3.7 是可以通过寄存器设置串口连接到这两个管脚。

内部串口只有一个,可以在这两个脚之间切换

 


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

相关文章

【记录】一次51单片机串口乱码问题排查

【记录】一次51单片机串口乱码问题排查 项目场景问题描述原因分析解决方案结语 项目场景 在51串口收发仿真实验中使用两个单片机互相通信,程序设定A上电1s后通过串口以16进制给B发送AA,直到B收到AA后回复BB,当A机确认收到AA后开始发送数据,若…

## 51单片机串口通讯

1,接线方式: RXD: 数据输入引脚;对应stc89的P3.0口; TXD:数据的发送端口;对应P3.1口; 注意:单片机的的串口TX,RX与外设交叉接线; 2串口编程要素 输出/输入数据缓冲器S…

51单片机串口通信详解

文章目录 前言一、计算机通信简介二、串口通信简介1、简介2、同步通信和异步通信2.1 同步通信2.2 异步通信 3、串行通信的传输方式4、串口通信硬件电路5、常见接口介绍 三、串口相关寄存器详解1、特殊功能寄存器SCON2、PCON寄存器3、TMOD寄存器(定时器工作方式寄存器…

51单片机串口接收处理

目的: 通过51单片机串口外设功能,来对一组数据进行处理,新手刚刚入门可能会将串口接收到的一个数据直接赋值给一个变量,然后用这个变量做相应功能,可是这样写的不稳定性太高了,有可能会接收不到你要的那个数据&#…

51单片机串口通信原理

计算机串行通信基础 通信有串行通信和并行通信两种方式 串行通信: 将数据字节分为一位一位的形式在一条数据线上逐个传送。如下图所示 串行通信特点:传输线少,长距离传送时成本低,且可以利用电话网等现成设备,但数据的…

51单片机串口点灯

#include "reg52.h" #include "intrins.h" sfr AUXR 0x8e; sbit D5 P3^7; //定义led 接在P3.7void UartInit(void) //9600bps11.0592MHz {SCON 0x50; //配置串口工作方式1,RE使能接收数据 0101 0000PCON 0x00; TMOD &0x0F;TMOD |0x2…

51单片机串口使用

文章目录 前言一、串口概念二、中断中的RI、TI和SUBF1.RI2.TI3.SUBF 三、串口波特率的计算四、代码的编写总结 前言 今天将为大家讲解51单片机的串口原理及代码编写。 一、串口概念 51单片机串口是一种通信接口,它可以将51单片机与外部设备连接起来,实…

51单片机串口通信

串口通信 1、通信的基本概念2、 51单片机串口介绍2.1、串口通信简介2.2、串口内部结构2.3、串口通信寄存器SCONPCON 2.4、串口工作方式 3、串口使用方法3.1、硬件3.2、通信协议RS2323.3、串口初始化 4、硬件设计5、 软件设计6、拓展 串口的通信,一般是检测通信模块是…

UART串口通信

什么是串行通信? 将数据字节分成一位一位的形式在一条传输线上逐位地发送。 优点:成本低,控制复杂。 什么是异步通信? 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信的两…

MCU-51:单片机串口详解

目录 一、计算机通信简介二、串口通信简介2.1 同步通信2.2 异步通信 三、串行通信的传输方式四、串口通信硬件电路五、常见接口介绍六、串口相关寄存器详解6.1 特殊功能寄存器SCON6.2 PCON寄存器6.3 TMOD寄存器 七、代码演示-单片机和电脑通信7.1 串口向电脑发送数据7.2 电脑通…

51单片机学习入门(三):串口

1.串口是什么? 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。 51单片机内部自带UART(…

51单片机——串口通信(发送和接受数据)

目录 一、实现的功能 二、串口通信 2.1单片机发送数据 2.1.1串口初始化 2.1.2串口发送程序 2.1.3发送效果 ​2.2单片机接收数据 2.2.1串口初始化 2.2.2接收数据程序 2.2.3接收效果 一、实现的功能 通过串口(UART)让单片机与计算机进行通信。51单…

51单片机-串口通信

目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部结构 2.5.相关寄存器 2.6.工作模式(模式1) 2.7.如何配置串口中断 3.实际应用…

IDEA调试注解处理器AbstractProcessor

1.右击项目Open In->Terminal 执行命令mvnDebug clean package 查看端口号 2.添加远程调试配置监听的端口 3.debug启动远程调试就欧克了

强大的IDEA调试工具

在开发中难免会遇到bug,而如何去跟有效率的去修复bug,除了必要的经验之外,巧妙的使用工具也是非常有必要的。 一下就是对IDEA强大调试工具的介绍 在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动…

IntelliJ IDEA调试显示表达式结果

今天无意中看到使用IntelliJ IDEA调试代码时,可以看到某段表达式的结果,如 在调试时,若想看到optStu.get().getName()的值该怎么做? 只需选中它 然后右键 点击Evaluate按钮即可出现result

idea 调试 java,将Intellij-IDEA调试器附加到正在运行的java进程

Is it possible to attach Intellij-IDEA debugger to a running java process? 解决方案 Yes! Here is how you set it up. Run Configuration Create a Remote run configuration: Run -> Edit Configurations... Click the "+" in the upper left Select the …

idea调试unity里面的lua代码

前言 本人一名java后端开发,看到前端同事调试lua代码无脑print,甚为鄙视,百度加实操写一份调试unity的lua脚本文档 操作 1.安装lua lua官网下载页面 最终下载页面 2.idea安装插件 emmylua 3.idea打开unity的lua脚本 idea->file->op…

idea调试maven项目

maven debug 调试 关联maven项目启动调试进行调试 关联maven项目 启动调试 进行调试

宝塔 xdebug idea 调试 php

安装宝塔 安装php xdebug插件 查看是否安装成功 phpinfo 修改php.ini 配置 [XDebug] ;xdebug.profiler_append 0 ;xdebug.profiler_enable 1 ;xdebug.profiler_enable_trigger 0 ;xdebug.profiler_output_dir "D:\BtSoft\temp\xdebug" ;xdebug.trace_output_di…