前文回顾↓↓↓
单片机:串口通信知识详解(上)
![9bfa127b7ce3ad4f595f33ac6ef2b862.gif](https://i-blog.csdnimg.cn/blog_migrate/d33858d3c44d117fe3594e9e54301856.gif)
我们接着上节的内容来给讲一下51单片机串口的使用方法,好的,直接开始我们今天的内容。
串行口结构串行口的结构,如图1所示。
图1 串行口的结构
这里有两个物理上独立的接收、发送寄存器SBUF,它们占用同一内存(99H)。
在程序逻辑上,SBUF只有一个,既代表发送寄存器,又代表接收寄存器,具有同一单元地址,但在物理结构上,则有两个完全独立的SBUF,一个发送寄存器SBUF和一个接收寄存器SBUF。如果CPU写SBUF,数据会被存入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收寄存器SBUF。(a=SBUF;SBUF=a;)。
串口相关的寄存器接下来讲一下与串口有关的寄存器。
1 SCON寄存器首先是SCON寄存器。
这里我简单说一下每一位的功能。
SM0:当PCON寄存器中SMOD0位为1时,该位用于帧错误检测。为0时,该位与SM1一起控制串口通信的工作方式。(这里一般用于控制工作方式)
SM0、SM1控制串口通信工作方式,如图2所示。
图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:接收中断请求标志位,数据接收结束时,标志位被自动