一:NOTE
今天分享一下52单片机串口通信的一些知识吧~
二:预备知识
1、RXD(P3^0)串行输入口,TXD(P3 ^ 1)串行输出口,SBUF接收和发送寄存器。
2、RI串行接收中断请求标志,TI串行发送中断请求标志。
3、串行口发送过程:发送操作是在TI=0下进行的,此时发送缓冲寄存器SBUF(发送)相当于一个移位寄存器,8位数据以设定的波特率发送,发完数据后,发送中断标志TI由硬件置位,可以发出中断。
4、串行口接收过程:接收过程是在RI=0且REN=1条件下启动的,此时接收缓冲寄存器SBUF(接收)相当于一个移位寄存器,接受时,先置位允许接受控制位REN,当RI=0和REN=1同时满足时,开始接收,接收完成由硬件置位RI
5、串行口有4种工作方式,常用的是工作方式1,方式0和方式2的波特率相对比较固定。
6、当定时器工作方式设置为工作方式2时,串行口设置为工作方式1时,计算初值的公式为:波特率=(2^SMOD)/32*(fosc/(12*256-X))
三:相关寄存器
1、这个寄存器通常只设置SMOD,因为它涉及到上面初值的计算。
2、这个设置串行口工作方式,而且还有接收中断REN,有的程序中直接写SCON=…很有人就看不懂了,其实就是设置这些位而已,这里有一点要注意,它的SM0是最高位,有的时候会迷糊的
3、这里ET2时定时器2的中断控制,只有STC89C52才有,51没有的,ES串行口中断,EA是总中断,这些都是到时候程序中要设置的。
四:查询方式实现串口通信
#include<reg52.h>