我们的51单片机的串口是一个异步全双工的UART串口(上一节重点介绍!)。所以本节我们将重点介绍UART的功能。
一、电路设计
UART可以理解为一种电路结构(如下图),全称是通用异步收发器(就是一个电路结构)
先来介绍TXD和RXD。
TXD:发送引脚
RXD:接收引脚
这两个引脚相互配合,共同完成全双工的工作。
重点来看TI和RI。
TI:发送中断请求标志位。RI:接收中断请求标志位。51单片机提供了2个串口中断的请求标志位。且这2个标志位都属于ES(前面讲中断时,说过,一个中断允许标志位)那之后程序设计,也需要走中断的那一套固定流程,所以接下来就要介绍它俩的专用寄存器。(SCON)
和定时器一样,SM0和SM1是用来选择我们串口的工作方式,SM2:多级通信(了解即可)
REN:允许接收(了解即可) TB8:发送中断位。RB8:接收中断位。(这2位是校验位,本节重点介绍的方式1无需校验)
在51中有4种方式,我们重点来看一下常用的方式1。(原理如下图)
这与上一节的异步通信是一样的,都是用来确定波特率的(下节重点介绍)
二、代码设计
先是中断请求标志位,也就是ES的作用。接下来是TI和RI,每次接收和发送数据都需要手动清0。
重点关注SBUF这条语句,结合本节第一张图,SBUF这个寄存器的功能就是将接收的数据存来。那我们就可以另 jieshou这个变量直接等于SBUF(因为数据就存储在这个寄存里。
细心的小伙伴可能观察到我们的第一张图中接收和发送都是由SBUF这一个寄存器控制的。那么在接收或发送时会不会冲突呢。答案是:肯定不会的。注意观察我们的接收和发送虽然共用一个寄存器,但是它们两个却有各自的缓冲寄存器。所以CPU在执行语句时,要么是接收,要么是发送。
三、总结
本节主要介绍了UART这个串口。
重点:理解UART各个寄存器间的工作方式。
难点:本节综合性较大,需将前期基础打牢。