第8章MCS-51单片机的串行口本章要点:•串行通信的分类、波特率及其制式•MCS-51单片机串行口发送和接收数据过程•MCS-51单片机串行口的工作寄存器各位含义•MCS-51单片机串行口的工作方式本章难点:•串行通信的接口标准•MCS-51单片机串行口工作方式2、3的应用8.1串行通信基础8.1.1串行通信的概念(1)串行通信:数据的各位依次逐位发送或接收,也就是每一次(或每一时刻)只能传送一位二进制数位。(2)串行通信的分类:异步通信(异步传输)和同步通信(同步传输)。所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。在单片机中主要采用异步通信方式,其帧的格式如图8-1所示。同步通信依靠同步字符保持通信同步。同步通信的帧是由1~2个同步字符和多字节数据组成,多字节数据之间不允许有空隙,发送器和接收器的时钟必须是同一个时钟。同步通信的帧的格式如图8-2所示。(3)串行通信速率:串行通信速率用波特率(bps)描述。波特率定义为每秒传输二进制数的位数,即1波特=1位/秒(1bps),波特率的倒数即为每位传输所需的时间。(4)串行通信的制式•单工•半双式•全双工发送器接收器a)AB发送器接收器发送器接收器发送器接收器接收器发送器ABABb)c)(3)串行通信的校验•奇偶校验•循环冗余校验(CRC)•累加和校验8.1.2串行通信的接口标准异步串行通信接口标准有三类:1.RS-232C、RS-4492.RS-4223.RS-423和RS-485、20mA电流环本书仅讲述RS-232C接口标准(1)RS-232C的连接器(2)RS-232C的电气特性RS-232C接口采用EIA电平,低电平为+3V~+15V,高电平为-3V~-15V。实际常用±12V或±15VRS-232C接口采用负逻辑,当是高电平,逻辑值为“0”;当是低电平,逻辑值为“1”。(3)RS-232C的连接RS-232C用于计算机与计算机之间或计算机与外设调制解调器之间的连接。电话线MODEM单片机2345678202223456782022MODEM23456782022单片机23456782022数据装置准备好DSR数据终端准备好DTR发送数据TxD接收数据RxD请求发送RTS允许发送CTS信号地GND载波检测CD振铃指示RI单片机TxDRxDGND单片机单片机DSRDTRTxDRxDRTSCTSGND单片机8.2MCS-51串行口的结构和工作原理1.串行口的基本功能•串/并转换功能•串行数据的格式化功能(封装与拆封)•可靠性功能•串行口与数据通信设备间的握手联络功能2.串行口的结构MCS-51的串行口是一个全双工的异步串行通信接口,通过它既可以发送数据也可以接收数据,其硬件主要由发送器部分和接收器部分组成。(1)接收器部分:由一个数据接收缓冲寄存器(接收SBUF)和一个输入移位寄存器构成,用于实现接收数据传输格式的拆封和串/并格式转换功能。(2)发送器部分:由一个具有移位功能的发送缓冲寄存器(发送SBUF)组成,用来实现发送数据的并/串格式转换和发送标准格式的封装功能。注意:SBUF是数据接收缓冲寄存器和数据发送缓冲寄存器的总称,二者共用一个地址为99H。在单片机的CPU对串行口执行写操作时,指的是将数据写入发送SBUF中;在CPU对串行口执行读操作时,是指读出接收缓冲SBUF中己送到的数据。2.串行口的工作原理(1)接收:串行口按软件设定的工作方式和波特率通过引脚RXD串行移入格式化数据至输入移位寄存器,待整帧接收完毕后进行反格式化处理,然后并行送入接收SBUF,并形成中断请求RI,通知CPU读取传入的数据。(2)发送:当CPU向串行口的发送SBUF写入所需发送的数据后,串行口自动按软件设定格式将待传送的数据装成标准格式帧,然后以软件规定的波特率借助于SBUF的移位功能通过TXD逐位移出。待整帧全部移出后,形成中断请求TI,通知CPU准备下一帧数据的发送工作。8.3MCS-51串行口的控制寄存器8.3.1串行口控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断(1)SM0、SM1:串行口工作方式选择位。SM0SM1工作方式功能说明00方式0同步移位寄存器输入/输出,波特率固定为fosc/1201方式18位UART,波特率可变(TI溢出率/n,n=32或16)10方式29位UART,波特率固定为fosc/n,(n=64或32)11方式39位UART,波特率可变(T1溢出率/n,n=32或16)(2)SM2:多机通信控制位,主要用于方式2和方式3中。•在方式0时,SM2必须为0。•在方式1时,若SM2=1,则规定只有串行口接收到有效停止时才置位RI,产生中断请求,通知CPU接收数据。•在方式2和3时,若SM2=1,且RB8(接收到的第9位数据)=1时,将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的8位数据丢弃。而当SM2=0时,则不论第9位数据为0还是为1,都将前8位数据装入SBUF中,并产生中断请求。(3)REN:允许接收控制位。REN位用于对串行数据的接收进行控制。REN=0,禁止接收;REN=1,允许接收。该位由软件置位或复位。(4)TB8:方式2和方式3中要发送的第9位数据。在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据,TB8=0表示数据,TB8=1表示地址。该位由软件置位或复位。TB8还可用于奇偶校验位。(5)RB8:方式2和方式3中要接收的第9位数据。在方式2或方式3时,RB8存放接收到的第9位数据。(6)TI:发送中断标志。TI=1,表示帧发送结束,可软件查询TI位标志,也可以请求中断。TI位必须由软件清0。(7)RI:接收中断标志。RI=1,表示帧接收结束,可软件查询RI位标志,也可以请求中断。RI位也必须由软件清0。8.3.2电源控制寄存器PCON•电源控制寄存器PCON是一个特殊功能寄存器,其字节地址为87H,PCON寄存器不能进行位寻址,只能字节寻址。•PCON主要为CHMOS型单片机的电源控制而设置的,对HMOS型单片机,仅用其中的一个标志SMOD。8.3.2电源控制寄存器PCONSMOD:波特率选择位。在方式1、方式2、方式3中,SMOD=1时,串行口波特率加倍;SMOD=0时,串行口波特率保持原值(在PCON中只有这一个位与串口有关)。8.4MCS-51单片机串行口的工作方式8.4.1工作方式0及应用工作方式0为8位同步移位寄存器工作方式,用于实现单片机I/O端口的扩展工作方式0的特点:(1)必须由外接移位寄存器配合,即由串入并出移位寄存器来扩展输出端口;由并入串出移位寄存器来扩展输入端口。(2)以RXD(P3.0)端作为数据移位的输入端(接收时)和输出端(发送时),以TXD(P3.1)端固定作为提供移位时钟的输出端。(3)移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。(1)移位寄存器简介:•串入并出移位寄存器常用的有:74LS164、74HC164、CD4094•并入串出移位寄存器常用的有:74LS165、74HC165、CD4014CLR为清0端,输出时必须为1,否则164输出端为0移位置入端,1时移位输出;0时并行置入(2)波特率:方式0波特率固定,为单片机晶振频率的十二分之一。即一个机器周期进行一次移位。(3)应用举例【例8.2】电路如图8-15所示,试编制程序输入K1~K8状态数据,并存入内存RAM40H。【例8.1】电路如图8-14所示,试编制程序按下列顺序要求每隔0.5秒循环操作。①8个发光二极管全部点亮;②从左向右依次暗灭,每次减少一个,直至全灭;③从左向右依次点亮,每次点亮一个;④从右向左依次点亮,每次点亮一个;⑤从左向右依次点亮,每次增加一个,直至全部点亮;⑥返回从②不断循环。8.4.2工作方式1及应用工作方式1为10位的异步串行通信方式。1.数据的发送和接收(1)数据发送发送时只要将数据写入SBUF(MOVSBUF,A),在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕,将SCON中的TI置1。(2)数据接收接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,将串行接收数据移入SBUF中。一帧数据接收完毕,将SCON中的RI置1,表示可以从SBUF取走接收到的一个字符(MOVA,SBUF)。2.波特率方式1波特率可变,由定时/计数器T1的计数溢出率来决定。溢出率:溢出的频繁程度,指在1s内发生溢出的次数。即溢出一次所需时间的倒数。波特率=(2SMOD/32)T1的溢出率3.应用举例【例8.3】设甲乙机以串行方式1进行数据传送,fosc=12MHz,波特率为1200bps。甲机发送的16个数据存在内RAM40H~4FH单元中,乙机接收后存在内RAM50H为首地址的区域中。8.4.3工作方式2及应用工作方式2为11位的异步串行通信方式。3.应用举例【例8.4】用查询法编出串行口在方式2下的发送程序。设单片机主频为6MHz,波特率为fosc/32,发送字符块起始地址为TBLK(内部RAM),字符块长度为LEN。要求采用累加和校验,空出第9数据位以供它用。8.4.4工作方式3及应用方式3同样是一帧11位的串行通信方式,其通信过程与方式2完全相同,所不同的仅在于波特率。方式2的波特率只有固定的两种,而方式3的波特率则与方式1相同,即通过设置T1的初值来设定波特率。【例8.5】请用查询法编出串行口在方式3下的接收程序。设单片机主频为6MHz,波特率为2400bps,接收数据区起始地址为RBLK(内部RAM),接收数据块长度字节由始发端发送来。要求采用累加和校验,并要编写出错程序。