您好,欢迎访问三七文档
8051的串行口串行通信基础在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。通信方式有两种,即并行通信和串行通信。80518051并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传送速度快;缺点是数据有多少位,就需要多少根传送线。并行通信在位数多、传送距离又远时就不太合适了。89C51单片机与打印机之间的数据传送就属于并行通信。8051并行通信串行通信指数据是一位一位按顺序传送的通信方式。它的突出优点是只需一对传输线(利用电话线就可作为传输线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。假设并行传送N位数据所需时间位T,那么串行传送的时间至少为NT,实际上总是大于NT的。串行通信1、异步通信异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。单片机的串行通信使用的是异步串行通信。111001100101001001发送设备接收设备10100100011110011001间隙任意异步通信与同步通信异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。2、同步通信同步通信中,在数据开始传送前用同步字符来指示(常约定1个--2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示。串行通信的速率用波特率来表示,所谓波特率(Baudrate)就是指一秒钟传送数据位的个数(每秒钟传送二进制代码的位数)。每秒钟传送一个数据位就是1波特。即:1波特=1bps(位/秒)。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。数据传送速率假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终止位、8个数据位)。这时,传送的波特率为:10b/字符×120字符/s=1200b/s每一位代码的传送时间Td为波特率的倒数。Td=1b/(1200bs-1)=0.833ms异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。8051串行口及应用8051单片机除具有4个8位并行口外,还具有全双工串行接口。此串行接口是一个全双工串行通信接口,即能同时进行串行发送和接收数据。它可以作UATR(通用异步接收和发送器)用,也可以作同步移位寄存器用。使用串行接口可以实现8051单片机系统之间点对点的单机通信和8051与系统机(如IBM-PC机等)的单机或多机通信。8051串口结构8051通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。有两个物理独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。内部结构简化示意图÷12TH1TL1fosc÷2÷16发送SBUF(99H)÷16输入移位寄存器TXD(P3.1)写SBUF:MOVSBUF,A;发送读SBUF:MOVA,SBUF;读入RITI移位时钟SMOD=1SMOD=0RXD(P3.0)T1溢出率装载SBUF接收SBUF(99H)串行发送与接收的速率与移位时钟同步。8051用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。÷12TH1TL1fosc÷2÷16发送SBUF(99H)÷16输入移位寄存器TXD(P3.1)写SBUF:MOVSBUF,A;发送读SBUF:MOVA,SBUF;读入RITI移位时钟SMOD=1SMOD=0RXD(P3.0)T1溢出率装载SBUF接收SBUF(99H)串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时(执行“MOVSBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。÷12TH1TL1fosc÷2÷16发送SBUF(99H)÷16输入移位寄存器TXD(P3.1)写SBUF:MOVSBUF,A;发送读SBUF:MOVA,SBUF;读入RITI移位时钟SMOD=1SMOD=0RXD(P3.0)T1溢出率装载SBUF接收SBUF(99H)在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOVA,SBUF”命令),便由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。÷12TH1TL1fosc÷2÷16发送SBUF(99H)÷16输入移位寄存器TXD(P3.1)写SBUF:MOVSBUF,A;发送读SBUF:MOVA,SBUF;读入RITI移位时钟SMOD=1SMOD=0RXD(P3.0)T1溢出率装载SBUF接收SBUF(99H)接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用双缓冲器结构来保持最大传送速率。÷12TH1TL1fosc÷2÷16发送SBUF(99H)÷16输入移位寄存器TXD(P3.1)写SBUF:MOVSBUF,A;发送读SBUF:MOVA,SBUF;读入RITI移位时钟SMOD=1SMOD=0RXD(P3.0)T1溢出率装载SBUF接收SBUF(99H)发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送;接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。一、串行口特殊功能寄存器1、串行数据缓冲器SBUF(地址99H)在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。89C51串行口的工作主要受串行口控制寄存器SCON的控制,另外,也和电源控制寄存器PCON有些关系。SCON寄存器用来控制串行口的工作方式,还有一些其他的控制作用。89C51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可。一、串行口特殊功能寄存器2、串行控制寄存器SCON(地址98H)SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断①SM0SM1——串行口工作方式选择位。②SM2——多机通信控制位。③REN——允许接收控制位。REN=1,允许接收。④TB8——方式2和方式3中要发送的第9位数据。⑤RB8——方式2和方式3中要接收的第9位数据。⑥TI——发送中断标志。⑦RI——接收中断标志。89C51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示。①SM0SM1——串行口工作方式选择位。SM0SM1工作方式功能说明000同步移位寄存器输入/输出,波特率固定为fosc/120118位UART;波特率可变(TI溢出率/n,n=32或16)1029位UART,波特率固定为fosc/n,(n=64或32)1139位UART,波特率可变(T1溢出率/n,n=32或16)SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断②SM2------多机通信控制位。(若置SM2=1,则允许多机通信)在方式2和方式3中,若SM2=1,且RB8(接收到的第9位数据)=1时,将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的8位数据丢弃。而当SM2=0时,则不论第9位数据为0还是为1,都将前8位数据装入SBUF中,并产生中断请求。第九位D8装入R8。在方式0时,SM2必须为0。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断②SM2------多机通信控制位。(若置SM2=1,则允许多机通信)当一片8051(主机)与多片8051(从机)通信时,所有从机的SM2位都置1。主机首先发送的一帧数据为地址,即从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM2=1。若SM2=0,即不属于多机通信情况,则接收一帧数据后,不管第九位数据是0还是1,都置RI=1,接收到的数据装入SBUF。根据SM2这个功能,可实现多个8051应用系统的串行通信。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1,以便接收下一帧数据。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断③REN------允许接收控制位。REN位用于对串行数据的接收进行控制:REN=0,禁止接收;REN=1,允许接收。该位由软件置位或复位。④TB8------方式2和方式3中要发送的第9位数据。在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0表示数据,TB8=1表示地址。该位由软件置位或复位。TB8还可用于奇偶校验位。⑤RB8------方式2和方式3中要接收的第9位数据。在方式2或方式3时,RB8存放接收到的第9位数据。SCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断⑥TI------发送中断标志。当方式0时,发送完第8位数据后,该位由硬件置位。在其他方式下,遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可软件查询TI位标志,也可以请求中断。TI位必须由软件清0。⑦RI------接收中断标志。当方
本文标题:8051的串行口
链接地址:https://www.777doc.com/doc-3261347 .html