单片机的串行通信实验

可以对程序进行修改,使单片机按照其他的工作方式进行串口通信?

  • 你看下这篇博客吧, 应该有用👉 :单片机串行通信
  • 除此之外, 这篇博客: 单片机串行通信中的 工作方式 1 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 工作方式 1~ 3 都是用于串行通信的。工作方式 1 输出 10 位的数据,通常用于点对点通信,采用 3 线式连接。即 RXD 对 TXD、TXD 对 RXD、地对地。

    首先是设置通信时钟波特率:
    波特率=1t×2SMOD32=fosc12×(2n−α)×2SMOD32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^n-\alpha)}\times\frac{2^{SMOD}}{32} =t1×322SMOD=12×(2nα)fosc×322SMOD
    之后,设置波特率发生器 T1。通过 TMOD(GATE C/T M1 M0)设置工作方式,通过 TH1 TL1 设置预设值;通过 PCON(SMOD,不可为寻址)设置波特率选择位。

    设置 SCON(RI TI REN SM0 SM1)设置工作方式等。

    数据经过 TXD(P3.1)发出,通过 RXD 和 接收移位寄存器缓冲输入。

    一般波特率发生器 T1 以工作方式 2 为主。也即:
    波特率=1t×2SMOD32=fosc12×(28−α)×2SMOD32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^8-\alpha)}\times\frac{2^{SMOD}}{32} =t1×322SMOD=12×(28α)fosc×322SMOD