发送与接收
在51内部有一个全双工串行通信接口。SBUF位串行口数据缓冲寄存器,包括接收和发送缓冲寄存器,其中接收缓冲寄存器只能读取不能写入,发送缓冲寄存器只能写入不能读取,它们的地址99H。
接收和发送缓冲寄存器在逻辑上共用地址,但是物理现实上有两个.
发送时,将帧格式写入SBUF,发送完成后,TI置1并发出中断信息
接收时,接收帧数据存入SBUF,接收完成后,RI置1发出中断
串行口控制
-
SCON 串行口控制寄存器
SM0与SM1控制串行通信工作方式
SM2 多机通信控制位:
为1时,仅当接收的第9位为1,才将RI置1,申请中断
为0时,接收完毕时都将RI置1,申请中断REN 允许串行接收控制位。置1允许
TB8 方式2,3中,人为设定的第9位
RB8 方式2,3中,接收的第9位存放位置
TI 发送中断请求位。一旦发出只能手动清零
RI 接收中断请求为。一旦发出只能手动清零 -
SMOD 波特率控制位
置1,波特率增大一倍
工作方式
- 方式0
串行转并行。用于并行IO扩展 - 方式1
异步串行通信。
在发送时,将要发送的数据送入SBUF,随后硬件自动加入起始位和停止位构成完整的帧格式。发送完成后,TI置1,申请中断
接收时,在RXD采样端 - 方式2
发送时,与方式1相似,不同之处在于方式2还有第9个数据位D8,由用户自定义,在SCON的TB8中设定。因此就可以对发送帧进行奇偶检校,或者或为控制位。
方式2发送的完整过程,是先准备好D8,再将输入送入SBUF,最后硬件自动添加起始位和停止位。发送完毕后TI置,申请中断
接收时,由于是9位数据,所以不可能全部送入SBUF,所以是将收到的前8位送入SBUF,第9位送入SCON的RB8。 - 方式3
与方式2相同,仅波特率计算与方式2不同
波特率设置
首先我们要知道,为什么要设置波特率,波特率在通信中起着什么样的作用。
波特率是单位时间传输数据的位数。对于发送端控制数据发送的速度;对于接受端来说,波特率应与发送端波特率同步,最低要求是不能低于发送端波特率,可以高于发送端波特率,但是较高的波特率将带来更大的数据流,需要后续系统在单位时间内处理的数据也越多。
方式0 | 固定 | f O S C 12 |
---|