80C51的串行口
下面是学习过程中的一些总结:总括:计算机与外界信息的交换称为通信,主要有两种方式:并行通信:传输速度快,但传输线较多,价格较贵。串行通信:数据的各位按顺序一位一位发送或接收。
大多数单片机都配置了SCI串行口,主要有两种方式:1、异步通信:每个字符为一帧,要包括:起始位、数据位、校验位、停止位。每帧数据之间的时间间隔是不固定的,字符间的同步依靠通信协议实现;帧内每一位数据的同步依靠收、发时钟实现2、同步通信:信息流中的字符与字符间和字符内部位与位之间都需要一个同步时钟。,可以把许多字符组成一个信息组,也称为一帧。
串行通信数据传输速率:意义是每秒钟传送多少个二进制数。一般异步通信在:509600bits同步通信在:1002Mbits我们称之为比特率,但在二进制的情况下,比特率和波特率数值相同,故而一般称作“波特率”。
f串行口简介:组成:两个数据缓冲寄存器SBUF一个串行口控制寄存器SCON一个输入移位寄存器串行口波特率发生器用于控制串行通信的速率(由内部的分频器和控制开关电路组成),它的振荡源可以来自单片机的振荡频率fOSC也可以来自定时计数器的时钟输出。
外界数据通过引脚RXD(P30)输入。数据先逐位进入输入移位寄存器,在进入接收寄存器(SBUF)在接收器中采用了双缓冲结构,避免数据重叠(因为CPU是被动的)。要发送的数据通过发送控制器控制逻辑门电路经输出移位寄存器一位一位输出到TXDP31。
f串行口控制寄存器SCON:
SM0,SM1为串行方式选择位,可以有四种方式;SM2为多机通信控制位,在方式2、3中配合发送接收数据的第九位(TB8RB8)对主机发来的数据识别并处理。REN为允许串行接收位,要由软件控制置1为允许接收。TI、RI为发送接收中断标志位。注意:在发送完数据后硬件会自动置TI为1,若要继续发送,必须用软件清零。准备接收时,首先要清零RI,接收完8位数据后硬件会自动置RI为1,然后执行读数据指令MOVASBUF,然后一定要清RI为0。
波特率的设置:方式0:时钟频率的112,不受方式2SMOD位影响。
2SMOD64fosc
SMOD
方式1和3:2
32T1溢出率
T1溢出周期:12fosc256X和定时器有关了我们一般是根据波特率计算溢出初值X。
f串行口工作方式:
由于我们最常用的是方式1,故重点介绍如下:
执行MOVSBUFA指令时,CPU将一个数据写入发送缓冲寄存器,就启动发送器发送。发送完一帧数据后,TI置1,通知CPU可以发送下一个数据了。
接收时,首先置RI为0,RENr