可以对程序进行修改,使单片机按照其他的工作方式进行串口通信?
工作方式 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