51单片机系列知识11--串行通信(2)

来源:互联网 发布:matlab矩阵中的最小值 编辑:程序博客网 时间:2024/05/21 05:57

 

2、 工作方式

方式0:扩展移位寄存器方式,移位速率fosc/12

① 以方式0工作时,数据由RXD串行的输入/输出,TXD输出位移脉冲,使外部的移位寄存器移位。

② 移位速率,振荡频率的十二分之一。

③ 串行口是从低位开始串行输出

           输入是从地位开始还是高位开始?

例:教材*1P132

④ 方式0时,SM2必须为0;REN=0禁止接收;方式0与TB8、RB8无关;TI=0;RI=0处于非中断状态

方式1: 8位UART(8位异步串行通信口)

         波特率可变(TI溢出率/n)

 

输出:

CPU向串行口发送数据缓冲器SBUF写一个数据,就启动串发送,在串行口内部一个十六分频计数器的同步控制下,在TXD端输出一个帧信息,先送起始位0,接着从低位开始依次输出8位数据,最后输出停止位1,并置位“1”,发送中断标志T1,串行口输出完一个字符后停止工作,说明发送完成。

输入:

接收器从波特率的16倍的速率采样RXD,当检测到负跳变市,三次采样确认后,若起始位有效,则开始接收

*1教材:《单片机微型机原理、应用与实验》张友德等 复旦大学出版

本帧的其余信息,接收到停止位为1时,将接到的8位数据装入接收数据缓冲器SBUF,置位RI,表示串行口接收到有效的一帧信息,向CPU中断请求,接着重新搜索RXD上的负跳变。

△ 异步通信可靠性高,能及时发现错误的原因。在检测RXD上的值时,内部十六分频计数器的16个状态把传送一位的时间分为16等分,在每位中心,即7、8、9这三个计数状态检测器采样RXD的输入电平,接收的值是三次采样中至少是两次相同的值,这样处理可以防止干扰

 

方式2、3

方式2  9位UART(9位异步串行通信口)

        波特率为fosc/64或fosc/32

方式3  9位UART(9位异步串行通信口)

        波特率可变(T1溢出率/n)

 

输出:CPU向发送缓冲器SBUF写入一个数据就启动串行口发送,同时将TB8写入输出移位寄存器的第9位。

      实际发送在内部十六分频计数器下一次循环的机器周期S1P1,使发送定时与这个十六分频计数器同步?

 

其余类似方式1

 

输入:

类似方式1,不同之处。

① 先从低位开始接受数据,再接受第9位数据

② 当RI=0,SM2=0或接收到的第9位数为1时,接收的数据装入SBUF和RB8,置位RI。若条件不满足,把数据丢失,并且不置位RI。△有条件接收数据,该特点目的是用于多机通信

一位时间以后又开始搜索RXD上的负跳变。

    

3、 波特率

波特率:串行口每秒钟内能发送(接收)二进制数的位数称为波特率。

串行口4种工作方式波特率的计算公式:

方式0的波特率=fosc/12

方式1的波特率=(2SMOD/32)×(T1溢出率)=(2SMOD/32)×fosc/12〔256-(TH1)〕

方式2的波特率=(2SMOD/64)×fosc

方式3的波特率:同方式

其中:方式0和方式2的波特率固定,方式1和方式3的波特率是可变的。

 

○串行接口或终端直接传送串行信息,位流的最大距离与传输速率及传输线的电气特性也有关。当使用传输线每0.3米,有50PF电容的非平衡屏蔽双纹线时,传输距离随传输速率的增加而减小。当波特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m。


By:霜月孤鸟

2016.2.25

0 0