51初学者——从数据手册到串口通信(UART)

张开发
2026/5/5 16:01:58 15 分钟阅读
51初学者——从数据手册到串口通信(UART)
本篇是通过数据手册配置串口通信UART的过程STC89C52RC单片机的UART即通用异步收发器特点是全双工可以同时收发异步需要约定好波特率无时钟线。下图是串行口的各个寄存器串行控制寄存器SCONSM0可以用作检查帧错误但它一般与SM1一起用于指定串行通信的工作方式本篇将选择方式1可变的波特率更灵活一些我们可以选择想要的传输速率。方式三的话通常用于多机通信因为方式三有9位他的第九位可以输入1/0来区分是数据帧还是地址帧同时SCON的SM2口对于方式三来说可以设置硬件过滤功能即让从机对地址帧的字节相应方式1的SM2口则没这个功能。所以方式1的SM2口通常默认为0。REN置1则允许串行接受数据置0则串行只能发送不能接收在这里我们将它置1。TB8与RB8分别为方式二和方式三的接受和发送的第九位数据这一方式一中rb 8是接收到的停止位用于检测帧错误它的值由硬件赋予。TI和RI是中断标志位每发送或接收一个直接都会将他们置1请求中断他们不会自动归0需要我们手动置0。下面是电源控制寄存器只需要配置两位。SMOD置1的话则波特率加倍置0则不加倍我们这里将它置0。SMOD0用于选择是否进行帧错误检测我们这里将它置0。下图是数据缓冲寄存器SUBFSUBF他其实是两个数据缓冲寄存器一个是只读寄存器另一个是只写寄存器。只读寄存器即接收寄存器只写寄存器即发送寄存器这里的发送和接受都是相对于单片机而言的。当我们将代码编译烧录进单片机里面时就是把数据存储到了发送寄存器按下按键发送寄存器会将数据发生到我们电脑上。这个过程数据是从单片机到电脑。当我们将电脑的数据通过UART发送给单片机时接收寄存器在起作用。我们还可以将接收寄存器的数据显示在单片机的OLED屏幕上。SUBF是一个暂时性的数据存储器。像是一个中转站。我们在串口通信的写入和读出都是要经过他。从机地址寄存器是用于硬件对比主机与从机的地址他比软件对比更快可以提高通信效率他的值是固定的不需要我们赋值。IEIPHIP都是老朋友了他们负责串口的中断串口没发送或接收一个字节都会触发中断。如果我们只需要发送与读取功能的话则不需要配置这几个中断寄存器。需要注意的是使用串口通信时我们还需要配置定时器1定时器1是芯片设计时安排的可以用做充当UART的“时钟线”的定时器。因为UART没有独立的时钟线所以我们需要与另一端约定一个相同的传输速率即波特率这个时候就需要定时器来充当这个内部时钟了。

更多文章