c语言串口收发数据_单片机:串口通信知识详解(下)

本文详细介绍了51单片机串口通信的工作方式,包括SM0、SM1的控制、SCON寄存器、PCON寄存器以及IE寄存器的配置。讲解了波特率的计算,并提供了一个串口收发数据的代码示例,展示了如何将接收到的数据以二进制形式显示在LED灯上并进行加1操作。此外,还提到了使用printf等函数进行串口发送数据的方法以及串口调试工具。
摘要由CSDN通过智能技术生成

前文回顾↓↓↓

单片机:串口通信知识详解(上)

9bfa127b7ce3ad4f595f33ac6ef2b862.gif

我们接着上节的内容来给讲一下51单片机串口的使用方法,好的,直接开始我们今天的内容。

串行口结构

串行口的结构,如图1所示。

aa9dbd8aa1f74a005ac29de2be326c43.png

图1 串行口的结构

这里有两个物理上独立的接收、发送寄存器SBUF,它们占用同一内存(99H)。

在程序逻辑上,SBUF只有一个,既代表发送寄存器,又代表接收寄存器,具有同一单元地址,但在物理结构上,则有两个完全独立的SBUF,一个发送寄存器SBUF和一个接收寄存器SBUF。如果CPU写SBUF,数据会被存入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收寄存器SBUF。(a=SBUF;SBUF=a;)。

串口相关的寄存器

接下来讲一下与串口有关的寄存器。

1 SCON寄存器

首先是SCON寄存器。

e7d8bebc2cb2a427b00259a3be5e491f.png

这里我简单说一下每一位的功能。

SM0:当PCON寄存器中SMOD0位为1时,该位用于帧错误检测。为0时,该位与SM1一起控制串口通信的工作方式。(这里一般用于控制工作方式)

SM0、SM1控制串口通信工作方式,如图2所示。

4537bcef7cb4fcdf594bb9f8357f36fd.png

图2 SM0、SM1控制串口通信工作方式

这里的SYSclk是晶振频率,方式0和方式2是比波特率固定的,具体大家可以自己算一下。方式1和方式3通过配置定时器1来改变波特率,SMOD是PCON寄存器中可以配置的,配置为1时可以将波特率提升1倍,后边会再介绍。

我们一般使用方式1,发送/接收8位数据,波特率可变。

SM2:多机通信控制位,主要用在方式2和方式3,为0时双机通信,为1时多机通信。

REN:串行接收允许位,REN=0时禁止接收,REN=1时允许接收

TB8/TR8:在方式2和方式3时分别用于存放发送/接收的第9位数据。

TI:发送中断请求标志位,数据发送结束时,标志位被自动置1并向CPU请求中断,需通过程序置0。

RI:接收中断请求标志位,数据接收结束时,标志位被自动

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值