您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 8串行通信及串行接口技术
8串行通信及串行接口技术串行通信概述89C51串行通信接口串行接口技术2发送接收D0D1D2D3D4D5D6D7控制状态1010100110101001计算机或外设计算机计算机计算机或外设(a)并行通信(b)串行通信101010011.通信方式计算机与外界(计算机与计算机之间、计算机与外围设备之间)的信息交换称为通信。并行通信串行通信串行通信概述3数据位:根据情况可取5位、6位、7位或8位,低位在前高位在后。2串行通信(1)分类(按数据格式分)异步通信停止位:通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。4同步通信*同步字符1同步字符2数据1数据2校验字符2校验字符1数据n(b)双同步字符帧结构……•同步字符数据1数据2数据3(a)单同步字符帧结构数据n……••校验字符1校验字符2在同步通信中,同步字符可以采用统一标准字符,也可由用户约定。在单同步字符帧结构中,同步字符常采用ASCII码中规定的SYN(即16H)代码;在双同步字符帧结构中,同步字符一般采用国际通用标准代码EB90H。5(2)波特率(baudrate)波特率是串行通信的重要指标,用于表征数据传输的速度,定义为每秒钟传送二进制数码的位数(bit),单位是波特,即1波特=1bit/s(bps)。【例】某异步通信的传输速率为7200字符帧/分钟,每个字符帧的长度为10位。则传输速率为:720010位60秒=1200bps每位传输时间(位宽):d10.833(ms)1200T6(3)串行通信的差错校验奇偶校验发送数据时,数据后尾随一位奇偶校验位(0或1)。当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;当设置为偶校验时,数据中1的个数与校验位1的个数之和应为偶数。接收时,接收方采用与发送方一样的差错校验方法对接收到的数据进行校验。和校验发送方对发送的数据块求和,产生一个字节的校验和,并将其尾随数据块发送;接收方将接收的数据求和,将结果与发送方发送的“校验和”进行比较以判断是否出错。789C51串行通信接口一、串行通信及接口1.结构:89C51内部有全双工的异步通讯串行口(UART);两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),一个用作发送,一个用作接收。发送缓冲器只能写入不能读出;接收缓冲器只能读出不能写入,两者共用一个字节地址(99H)。82.串行口控制寄存器SCON用于串行通信的方式选择、接收和发送控制以及串行口的状态标志指示。SM0SM1--串行口工作方式选择位D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0SM1工作方式功能描述波特率00011011方式0方式1方式2方式38位同步移位寄存器10位UART11位UART11位UARTfosc/12可变(定时器控制)fosc/64、fosc/32可变(定时器控制)9SM2:多机通信控制位*主要用于方式2和方式3。当串行口以方式2和方式3接收数据时:SM2=1,则只有在接收到的第9位数据(RB8)为1时才将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则将接收到的前8位数据丢弃。SM2=0,则不论第9位数据是0还是1,都将前8位数据装入SBUF中,并产生中断请求。在方式0,SM2必须为0。REN:允许接收控制位REN=0时禁止串行口接收。REN=1时允许串行口接收。该位由软件置位或复位。10TB8:发送数据位*在方式2或方式3时,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。可作为奇偶校验位(单机通信)。可在多机通信中作为发送地址帧或数据帧的标志位。多机通信时,一般约定:发送地址帧时,设置TB8=1;发送数据帧时,设置TB8=0。在方式0和方式1中,该位未用。RB8:接收数据位*在方式2和方式3时,存放接收数据的第9位。可以是约定的奇偶校验位。可以是约定的地址/数据标志位,可根据RB8被置位的情况对接收到的数据进行某种判断。在多机通信时,若RB8=1,说明收到的数据为地址帧;RB8=0,说明收到的数据为数据帧。在方式1下,若SM2=0,则RB8用于存放接收到的停止位方式;方式0下,该位未用。11TI:发送中断标志位用于指示一帧数据发送完否。方式0下,发送电路发送完第8位数据时,TI由硬件置位。其他方式下,TI在发送电路开始发送停止位时置位,这就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知一帧信息是否已发送完毕。RI:接收中断标志位用于指示一帧信息是否接收完。在方式1下,RI在接收电路接收到第8位数据时由硬件置位。在其他方式下,RI是在接收电路接收到停止位的中间位置时置位的,RI也可供CPU查询,以决定CPU是否需要从SBUF中提取接收到的字符或数据。RI也由软件复位。123.电源控制寄存器PCONSMOD--串行口波特率倍增位PCON不可位寻址。可用下列指令设置SMOD位:ANLPCON,#7FH;SMOD=0ORLPCON,#80H;SMOD=1D7D6D5D4D3D2D1D0SMOD---GF1GF0PDIDL134.串行通信工作方式(1)串行工作方式0*工作原理串行口作为同步移位寄存器使用;以RXD(P3.0)端作为数据移位的输入端和输出端;TXD(P3.1)端输出移位脉冲;8位为一帧,不设起始位和停止位,低位在前,高位在后;帧格式如下:每个机器周期发送或接收一位,故波特率为fosc/12;...D0D1D2D3D4D5D6D7...14发送时,只需将数据写入串行口缓冲寄存器SBUF,即启动发送,串行口把8位数据以fosc/12的波特率从RXD端送出(低位在前),发送完置中断标志TI为“1”;接收时,软件置REN=1时,串行口即开始从RXD端以fosc/12波特率输入数据(低位在前),当接收到8位数据时,置中断标志RI为“1”,用户可从SBUF读数据。应用串行工作方式0常用于扩展I/O接口。15(2)串行工作方式1工作原理串行口作为通用异步接收和发送器(UART)使用;10位为一帧,帧格式如下:定时器T1作为波特率发生器,通常选用方式2(自动重装入初值方式)、定时、禁止中断;..0D0D1D2D3D4D5D6D71..起始位停止位16波特率={T1溢出率}2SMOD/32T1溢出周期=(256-初值)12/foscT1溢出率=fosc/[12(256-初值)]波特率=2SMODfosc/[384(256-初值)]则定时器T1方式2的初值为:初值=256-2SMODfosc/[384波特率]发送时,数据从引脚TXD输出,当数据写入串行口缓冲寄存器SBUF,即启动发送,发送完一帧数据置中断标志TI为“1”;接收时,软件置REN=1时,串行口即开始采样RXD端,当检测到起始位时开始接收一帧数据,接收到停止位时置中断标志RI为“1”,用户可从SBUF读数据。17【例】由内部RAM单元30H~4FH取出ASCII码数据,在最高位上加奇偶校验位后由串行口输出,采用10位异步通信,波特率为1200bit/s,fosc=11.0592MHz。解:由题意可知,应把串行口置为方式1;采用定时器T1,以方式2工作,作波特率发生器,预置值(TH1)=(TL1)=0E8H。初值=256-2SMODfosc/[384波特率]=256-2011059200/(3841200)=256-24=0E8H18TX:MOVC,P;设置奇校验位CPLCMOVACC.7,CMOVSBUF,A;启动串行口发送JNBTI,$;等待发送完CLRTI;清TI标志,允许再发送RETMOVTMOD,#20H;设T1为模式2MOVTL1,#0E8H;装入时间常数MOVTH1,#0E8HSETBTR1;启动定时器T1MOVSCON,#40H;设串行口为方式1MOVR0,#30H;发送数据首地址MOVR7,#32;发送个数LOOP:MOVA,@R0;发送数据送累加器ALCALLTX;调发送子程序INCR0;指向下一步个地址DJNZR7,LOOP……19工作原理串行口作为通用异步接收和发送器(UART)使用;11位为一帧,帧格式如下:可编程位(第9数据位)D8由软件置“1”或清“0”,可作检验位,也可作它用。发送方发送时将TB8装入D8,接收方接收时将D8装入RB8;波特率=2SMODfosc/64..0D0D1D2D3D4D5D6D7D81..起始位停止位(3)串行工作方式2*20(4)串行工作方式3*工作原理串行工作方式3的波特率与方式1相同;其他功能与方式2完全相同。21二、89C51串行通信应用1.双机串行通信技术如果两个8031应用系统相距很近,将它们的串行口直接相连,即可实现双机通信。TxD8031RxDGNDRxD8031TxDGNDAT89S51AT89S51(P3.0)(P3.0)(P3.1)(P3.1)22【例】双机通信XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R2510VCCX111.0592MHzC122pFC222pFC310uFR110kVCCD1LED-BIBYD2LED-BIBYD3LED-BIBYD4LED-BIBYD5LED-BIBYD6LED-BIBYD7LED-BIBYR3510R4510R5510R6510R7510R8510R9510XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C51C610uFR1110kVCCX211.0592MHzC422pFC522pFD0LED-REDRTX.DSN23ORG0000H;发送端程序tx.asmLJMPMAINORG0030HMAIN:MOVTMOD,#20H;设T1为模式2MOVTL1,#0FDHMOVTH1,#0FDH;波特率9600ANLPCON,#7FH;SMOD=0SETBTR1;启动定时器T1MOVSCON,#40H;设串行口为方式1MOVA,#0FEHL1:MOVSBUF,A;发送数据JNBTI,$;发送完?CLRTILCALLD1S;延时1秒RLASJMPL124ORG0000H;接收端程序rx.asmLJMPMAINORG0030HMAIN:MOVSP,#60HMOVTMOD,#20HMOVTL1,#0FDHMOVTH1,#0FDH;波特率9600ANLPCON,#7FH;SMOD=0SETBTR1MOVSCON,#50H;串口方式1,允许接收L2:JNBR
本文标题:8串行通信及串行接口技术
链接地址:https://www.777doc.com/doc-309007 .html