串口通信

发送与接收

在51内部有一个全双工串行通信接口。SBUF位串行口数据缓冲寄存器,包括接收和发送缓冲寄存器,其中接收缓冲寄存器只能读取不能写入,发送缓冲寄存器只能写入不能读取,它们的地址99H

接收和发送缓冲寄存器在逻辑上共用地址,但是物理现实上有两个.

发送时,将帧格式写入SBUF,发送完成后,TI置1并发出中断信息
接收时,接收帧数据存入SBUF,接收完成后,RI置1发出中断

串行口控制

  1. SCON 串行口控制寄存器

    SM0与SM1控制串行通信工作方式
    //picture
    SM2 多机通信控制位:
    为1时,仅当接收的第9位为1,才将RI置1,申请中断
    为0时,接收完毕时都将RI置1,申请中断

    REN 允许串行接收控制位。置1允许
    TB8 方式2,3中,人为设定的第9位
    RB8 方式2,3中,接收的第9位存放位置
    TI 发送中断请求位。一旦发出只能手动清零
    RI 接收中断请求为。一旦发出只能手动清零

  2. 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 \frac{f_{OSC}}{12} 12fOSC
方式1可变 f O S C 12 ( 2 k − T H 1 ) \frac{f_{OSC}}{12(2^k -TH1)} 12(2kTH1)fOSC
方式2固定 2 S M O D f O S C 64 2^{SMOD} \frac{f_{OSC}}{64} 2SMOD64fOSC
方式3可变同方式1
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页