您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS51第七章串行通信
MCS-51的串行通信电气工程学院王民慧本章主要内容串行通信基础MCS-51的串行接口MCS-51串行口的应用7.1串行通信基础串行数据通信要解决两个关键技术问题:•数据传送,即数据以什么形式进行传送。•数据转换。数据转换就是指单片计算机在接受数据时,如何把接收到的串行数据转化为并行数据,计算机在发送数据时,如何把并行数据转换为串行数据进行发送。一、串行通信的分类异步通信(AsynchronousCommunication)所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。起始位:位于字符帧的开头,只占一位,是逻辑低电平,表示发送端开始发送一帧数据。数据位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。同步通信(SynchronousCommunication)同步传输方式中,比特块以稳定的比特流的形式传输,数据被封装成更大的传输单位——帧。每帧中含有多个字符,字符与字符间没有间隙,没有停止位和起始位。因而同步传输可以提高传输的有效性。波特率:串行通信的速率用波特率来表示,是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特。即:1波特=1bps(位/秒)。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。异步传送常用波特率为50~19200波特,同步传送速率较高,一般在20000波特以上。7.2MCS-51的串行接口在MCS-51单片机中,串行I/O接口是一个全双工串行通信接口,有一个数据接收缓冲器和一个数据发送缓冲器,两个缓冲器共用一个地址99H,表示为SBUF。中央处理器对接收缓冲器只能读出不能写入,对发送缓冲器只能写入不能读出。系统中有两个特殊功能寄存器SCON和PCON,控制串行通信工作方式。一、串行口的结构发送和接收电路串行口控制寄存器SCON和PCONSM0、SM1——串行口工作方式选择位其状态组合和对应工作方式为:SM0SM1工作方式00方式001方式110方式211方式32)M2——允许方式2、3的多机通信控制位在方式2和3中,若SM2=1且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若SM2=0,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请求。方式0时,SM2必须置0。3)REN——允许接收位REN=0禁止接收数据REN=1允许接收数据4)TB8——发送数据位8在方式2、3时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置。5)RB8——接收数据位8在方式2、3时,RB8是接收的第9位数据。在方式1时,RB8是接收的停止位在方式0时,不使用RB86)TI——发送中断标志位在方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。因此,TI=1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI由软件清“0”。7)RI——接收中断标志位在方式0时,接收完第8位数据后,该位由硬件置位。在其它方式下,于接收到停止位之前,该位由硬件置位。因此,RI=1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。RI由软件清“0”。串行口的工作方式方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由T1的溢出率决定。1.工作方式0•SM0SM1=00时,选择工作方式0,为移位寄存器输入/输出方式,可外接移位寄存器或同步输入/输出设备。•按工作方式0发送时,RXD引脚用于串行数据输出,TXD输出移位同步脉冲。当数据写入发送缓冲器后,串行口将8位数据从低位开始以Fosc/12的波特率从RXD端输出,输出完后将中断标志TI置1,发中断请求。•为串行口允许接收控制位,在按工作方式0接收时,受到REN位的控制。REN=0,禁止接收;REN=1允许接收,数据由RXD端输入,TXD端输出移位同步信号。当接收到8位数据时,将中断标志RI置1,发中断请求。•转入中断服务后,由中断服务程序将TI、RI清0。在方式0中没有使用TB8和RB8位。2.工作方式1当SM0SM1=01时,串行接口选择工作方式1,为可变波特率的8位异步通信方式。发送数据由TXD端输出,每一帧信息为10位,一位起始标志位0,8位数据位和一位停止位1。发送时,数据送入发送缓冲器SBUF,然后启动发送。数据发送完后,将中断标志位TI置1。接收时(REN=1)以所选波特率的16倍速率采样RXD引脚,当采样到从1到0的下跳沿时启动接收器,确认起始位后,接收一帧信息。当RI=0,停止位为1或SM2=0时,停止位进入RB8,中断标志位RI置1。若这两个条件都不满足,则信息丢失。在通常情况下,串行口方式1工作时,SM2清0,波特率为:方式1波特率=×定时器T1的溢出率为了可靠传送,接收采样时,每位采样3次,按多数表决。中断标志RI由中断服务程序清0。322SMOD3.工作方式2当SM0SM1=10时,串行接口选择工作方式2,为9位异步通信方式。在这种方式下,每一帧有11位。1位起始位,8位数据位,1位可以置1或者清0的第9位,1位停止位。第9位实际上是SCON中的TB8,作为多机通信中址址/数据标志位或数据的奇偶校验位。接收时,当RI=0,SM2=0或接收到的第9位数据为1时,接收数据送入SBUF,第9位送入RB8,中断标志位RI置1;若二条件都不满足,接收到的信息丢失。若第9位表示奇偶校验位,则在中断处理程序中应进行校验处理。方式2波特率=×振荡器频率642SMOD4.工作方式3当SM0SM1=11时,串行接口选择工作方式3,为波特率可变的9位异步通信方式。除了波特率可变外,工作方式3与工作方式2相同。方式3波特率=×定时器T1的溢出率322SMOD波特率是串行口每秒钟发送或接收的数码位数,与振荡器的频率或定时器的溢出率成正比。当定时器/计数器处于工作方式0、工作方式1和工作方式3时溢出率=/(2n-n位定时器初值+重置定时器的中断处理程序机器周期数)12振荡频率当定时器处于工作方式2时溢出率=/(28-TH1)12振荡频率
本文标题:MCS51第七章串行通信
链接地址:https://www.777doc.com/doc-3295851 .html