第9章MCS51的串行通信_第1页
第9章MCS51的串行通信_第2页
第9章MCS51的串行通信_第3页
第9章MCS51的串行通信_第4页
第9章MCS51的串行通信_第5页
已阅读5页,还剩44页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章MCS-51的串行通信主要内容9.1串行通信基础9.2MCS-51的串行接口9.3MCS-51串行口的应用9.4单片机的多机通信9.1串行通信基础串行通信是一种能把二进制数据按位传送的通信,故它所需要的传输线数极少,特别适用于分级.分层和分布式控制系统以及远程通信.在计算机系统中,串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送.9.1.1串行通信的分类按照串行数据的同步方式,串行通信可以分为同步通信和异步通信两类.同步通信是按照软件识别同步字符来实现数据的发送和接收的.异步通信是一种利用字符的再同步技术的通信方式.9.1串行通信基础1.异步通信(Asynchronousmunication)在异步通信中,数据通常以字符(或字节)为单位组成字符帧传送.字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收.发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步.在异步通信中,字符帧格式和波特率是两个重要指标.(1)字符帧(CharacterFrame)字符帧也称数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。①起始位位于字符帧开头,只占1位,始终为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。②数据位紧跟起始位之后,可取5位、6位、7位或8位,低位在前高位在后。若所传数据为ASCII字符,则常取7位。9.1串行通信基础③奇偶校验位位于数据位后,仅占一位,用于表征串行通信中采用奇校验还是偶校验,由用户自己决定。④停止位位于字符帧末尾,为逻辑“1”高电平,通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。9.1串行通信基础(2)波特率(baudrate)波特率的定义为每秒钟传送二进制数码的位数(也称比特数),单位是bit/s.波特率越高,数据传输速度越快.每位的传输时间定义为波特率的倒数.2.同步通信(Synchronousmunication)同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息.这里的信息帧和异步通信中的字符帧不同,通常含有若干个数据字符.信息帧一般均由同步字符、数据字符和校验字符CRC(CyclicRedundancyCheck,循环冗余校验)等三部分组成。9.1串行通信基础同步字符可以采用统一标准格式,也可由用户约定。同步通信的优点是数据传输速率高,缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除应和发送波特率保持一致外,还要求把它同时传送到接收端去。9.1串行通信基础9.1.2串行通信的制式按照数据传送的方向,串行通信可分为半双工和全双工两种制式.1.半双工(HalfDuplex)在半双工方式下,A站和B站之间只有一个通信回路,故数据或者由A站被发送B站接收,或者由B站发送被A站接收.因此,A、B两站之间只需要一条信号线和一条接地线.9.1串行通信基础2.全双工(FullDuplex)在全双工方式下,A、B两站间有两个独立的通信回路,两站都可以同时发送和接收数据。因此,全双工方式下的A、B两站之间至少需要三条传输线:一条用于发送,一条用于接收以及一条用于信号地。9.2MCS-51的串行接口MCS-51有一个可编程全双工串行通信接口SIO,具有UART的全部功能.9.2.1串行口的结构MCS-51串行口的结构由串行口控制寄存器SCON、发送和接收电路等三部分组成。1.发送和接收电路9.2MCS-51的串行接口9.2MCS-51的串行接口2.串行口控制寄存器SCON和PCONMCS-51对串行口的控制是通过SCON实现的,也与电源控制寄存器PCON有关.(1)SCON各位定义9.2MCS-51的串行接口表9-1串行口的工作方式和所用波特率对照表SM0SM1相应工作方式说明所用波特率00方式0同步移位寄存器fosc/1201方式110位异步收发由定时器控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发由定时器控制9.2MCS-51的串行接口(2)

PCON各位定义9.2MCS-51的串行接口9.2.2串行口的工作方式MCS-51有方式0,方式1,方式2和方式3等四种工作方式.1.方式0在方式0下,串行口的SBUF是作为同步移位寄存器使用的.在串行口发送时,“SBUF(发送)”相当于一个并入串出的移位寄存器,由MCS-51的总线并行接收8位数据,并从TXD线串行输出;在接收操作时,“SBUF(接收)”相当于一个串入并出的移位寄存器,从RXD接收一帧串行数据,并把它并行地送入总线.在方式0下,SM2、RB8和TB8都不起作用,它们通常均应设置为“0”状态。发送操作:RXD线上发出8位数据,TXD线上发送同步脉冲。接收操作:串行数据由RXD输入,TXD线输出同步脉冲。9.2MCS-51的串行接口2.方式1在方式1下,串行口设定为10位异步通信方式.字符帧中除8位数据位外,还可有1位起始位和1位停止位.发送操作:在TI=0时,执行MOVSBUF,A指令开始,硬件自动添加起始位和停止位。TI也由硬件在发送停止位时置位,并由软件清除。接收操作:在RI=0和REN=1条件下进行,SM2应设为0。在RI=0和SM2=0下,接收到停止位为“1”,则8位字符存入“SBUF(接收)”中,停止位送入RB8,并使RI=1,并由软件清除。9.2MCS-51的串行接口3.方式2和方式3方式2和方式3都是11位异步收发.只是波特率不同.发送过程与方式1类似,要事先把第9位数据装入TB8中.指令为SETBTB8CLRTB8随后用MOVSBUF,A启动发送过程.接收过程与方式1类似,不同的是,方式2或方式3中的RB8存放的是第9位数据(接收的TB8).方式2和方式3的接收条件为:(1)RI=0且SM2=0.第9位数据可为奇偶校验位(不参与接收与否的控制).(2)RI=0且RB8=1(接收到的第9位数据为1).此时SM2=1,第9位数据参与是否接收的控制.9.2MCS-51的串行接口9.2.3串行口的通信波特率1.方式0的波特率固定,其值为fosc/12(fosc为主机频率).2.方式2的波特率若SMOD=0,波特率为fosc/64;若SMOD=1,波特率为fosc/32.3.方式1或方式3的波特率波特率=2SMODX定时器T1溢出率/329.3MCS-51串行口的应用学习MCS-51的串行口,就是要学会编制通信软件的方法和技巧.9.3.1串行口在方式0下的应用有两种不同的用途:(1)把串行口设置成并入串出的输出口.(2)把串行口设置成串入并出的输入口.[例9.2]根据图9-13的线路连接,请编写发光二极管自左至右以一定速度轮流显示的程序.设发光二极管为共阴极接法.9.3MCS-51串行口的应用解:CD4094是一个8位串入并出的同步移位寄存器,CLK为同步脉冲输入端,STB为控制端,STB=0:8位并行输出关闭,允数据输入;STB=1:DATA输入关闭,允许8位数据并行输出.设串行口采用中断方式发送,显示时间靠DELAY延时程序实现.①主程序ORG2000HMOVSCON,#00HMOVIE,#80HCLRP1.0MOVA,#80H9.3MCS-51串行口的应用

MOVSBUF,ALOOP:SJMPLOOP②中断服务程序ORG0023HAJMPSBVORG0100HSBV:SETBP1.0ACALLDELAYCLRTIRRACLRP1.0MOVSBUF,ARETI9.3MCS-51串行口的应用DELAY:...END9.3MCS-51串行口的应用[例9.3]根据图9-14电路,编写MCS-51串行输入开关量并把它存入20H单元的程序.要求控制开关KC断开(KC=1)时8031处于等待状态,KC合上(KC=0)时8031开始输入并进行模拟.9.3MCS-51串行口的应用解:CD4014是并入串出的同步移位寄存器.其中,Q8为串行输出端,CLK为同步移位脉冲输入端,P//S为控制端.若P//S=0,则CD4014串行输出,禁止并行输入;若P//S=1,则CD4014并行输入,禁止串行输出.采用查询方式.相应程序为:ORG2000HSTART:JBP1.0,$SETBP1.1NOPCLRP1.1MOVSCON,#10HJNBRI,$9.3MCS-51串行口的应用

CLRRIMOVA,SBUFMOV20H,AACALLOTRPROSJMPSTARTEND9.3.2串行口在其他方式下的应用[例9.4]请用中断法编出串行口方式1下的发送程序.设单片机主频为6MHz,T1用作波特率发生器,波特率为2400b/s,发送字符块在RAM的起始地址为TBLOCK单元,字符块长度为LEN.要求奇偶校验位在数据第8位发送,字符块长度LEN率先发送.9.3MCS-51串行口的应用解:波特率=2400b/s,取SMOD=1,计算得到TH1和TL1的时间常数初值为F4H.9.3MCS-51串行口的应用(1)主程序ORG2100HTBLOCKDATA20HLENDATA14HSTART:MOVTMOD,#20HMOVTL1,#0F4HMOVTH1,#0F4HMOVPCON,#80HSETBTR1MOVSCON,#40HMOVR0,#TBLOCKMOVA,#LENMOVR2,AMOVSBUF,A

SETBEAWAIT:SETBESSJMPWAIT(2)中断服务程序ORG0023HLJMPTXSVEORG2150HTXSVE:CLRESCLRTIMOVA,@R0MOVC,PSW.0CPLCMOVACC.7,CMOVSBUF,A9.3MCS-51串行口的应用DJNZR2,NEXTSJMP$NEXT:INCR0RETIEND[例9.5]用查询法编出串行口在方式2下的发送程序.设单片机主频为6MHz,波特率为Fosc/32,发送字符块起始地址为TBLOCK(RAM),字符块长度为LEN,要求采用累加和校验,空出第9数据位以供他用.解:累加和是指累加所有需要发送或接收的数据(字符)字节后得到的低字节和(大于255部分舍去).本程序由主程序和发送子程序组成.9.3MCS-51串行口的应用9.3MCS-51串行口的应用①主程序ORG1000HTBLOCKDATA20HLENDATA1EHSTART:MOVSCON,#80HMOVPCON,#80HMOVR0,#TBLOCKMOVR2,#LENMOVR3,#LENACALLTXSUB...SJMP$②发送子程序ORG1100HTXSUB:PUSHACCPUSHPSWCLRTITXLEN:MOVSBUF,R2JNBTI,$CLRTITXD:MOVA,@R0MOVSBUF,AJNBTI,$CLRTIADDA,R3MOVR3,A9.3MCS-51串行口的应用

INCR0DJNZR2,TXDTXSUM:MOVSBUF,R3JNBTI,$CLRTIMOVR3,#00HPOPPSWPOPACCRETEND[例9.6]请用查询法编出串行口在方式3下的接收程序.设单片机主频为6MHz,波特率为2400b/s,接收数据起始地址为RBLOCK(RAM),接收数据块长度字节由发送端发送来.要求采用累加和校验,并要编写出错程序.9.3MCS-51串行口的应用解:本程序由主程序,接收子程序和出错处理程序组成.9.3MCS-51串行口的应用①主程序ORG1000HRBLOCKDATA30HSTART:MOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR1MOVSCON,#0D0HMOVPCON,#80HMOVR0,#RBLOCKMOVR3,#00HACALLRXSUB...SJMP$②接收子程序RXSUB:CLRRIRXLEN:JNBRI,$CLRRIMOVA,SBUFMOVR2,AADDA,R3MOVR3,ARXD:JNBRI,$CLRRIMOVA,SBUFMOV@R0,AADDA,R3MOVR3,AINCR0DJNZR2,RXD9.3MCS-51串行口的应用RXSUM:JNBRI,$CLRRIMOVA,SBUFXRLA,R3JNZERRORRET③出错处理程序若校验有错,一般把出错信息(例如:‘WRONGMASSAGE’)连同求得的累加和回送发送端,发送端收到后,进行屏幕显示并进行重发.‘WRONGMASSAGE’常放在ROM中,以’CR’,‘CF’作为起始标志,以’ESC’作为结束标志.相应程序为:ERROR:ACALLERRSTRDB0DH,0AHDB‘WRONGMASSAGE’DB1BHTXERRSUM:MOVA,R3MOVSBUF,ARETERRSTR:POPDPHPOPDPLCLRAMOVCA,@A+DPTRLOOP:MOVSBUF,AJNBTI,$CLRTIINCDPTR9.3MCS-51串行口的应用CLRAMOVCA,@A+DPTRCJNEA,#1BH,LOOPMOVA,#10HJMP@A+DPTREND9.4单片机的多机通信单片机多机通信是指由两台以上单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的最终控制.链接形式:星型,环型,串行总线型,主从式多机四种.9.4单片机的多机通信主从式多机型是一种分散形网络结构,具有接口简单和使用灵活等优点,现对它进行介绍.9.4.1软件中断型主从式多机通信1.主从式多机通信原理在主从式多机系统中,只有一台主机,但从机可以有多台.主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能被主机所接收,各从机之间不能直接通信.MCS-51使用于多机通信时必须在方式2或方式3下工作,作主机的8031的SM2=0,作从机的8031的SM2=1.主机发送并被接收的信息有两类:一类是地址,用于指示需要和主机通信的从机地址,由串行数据第9位为”1”来标志;另一类是数据,由串行数据第9位为”0”来标志.(1)主机的SM2=0;所有从机的SM2=1,以便接收主机发来9.4单片机的多机通信的地址.(2)主机给从机发送地址时,第9数据位应设置为1,以指示从机接收这个地址.(3)所有从机在SM2=1,RB8=1和RI=0时,接收主机发送来的从机地址,进入相应中断服务程序,并与本机地址相比较,以便确认是否为被寻址从机.(4)被寻址从机通过指令使SM2=0,以便正常接收数据,并向主机发回接收到的从机地址,供主机核对.未被寻址的从机保持SM2=1,并退出各自中断服务程序.(5)完成主机和被寻址从机之间的数据通信,被寻址从机在通信完成后重新使SM2=1,并退出中断服务程序,等待下次通信.9.4单片机的多机通信2.主从式多机通信实例[例9.7]请按照图9-19编写主机和从机地址的通信程序,要求通信波特率为1200b/s.解:在多机通信中,主从机之间除传送从机地址和数据外,还应当传送一些供主机或从机识别的命令和状态字.本题中假设有如下的命令字和状态字.(1)两条控制命令为:00H------主机发送从机接收01H------从机发送主机接收均以数据形式发送.(2)从机状态字:9.4单片机的多机通信该状态字由被寻址的从机发送,被主机接收,用于指示从机的工作状态,其格式如图9-20所示.9.4单片机的多机通信①主机程序:由主机主程序和主机通信子程序组成.9.4单片机的多机通信程序中所用寄存器分配如下:R0:存放主机发送的数据块起始地址R1:存放主机接收的数据块起始地址R2:存放被寻址的从机地址R3:存放主机发出的命令R4:存放发送的数据块长度R5:存放接收的数据块长度主机主程序:ORG2000HSTART:MOVTMOD,#20H;设置波特率MOVTH1,#0F4HMOVTL1,#0F4H9.4单片机的多机通信SETBTR1MOVSCON,#0D8H;方式3,允,SM2=0,TB8=1MOVPCON,#00HMOVR0,#40HMOVR1,#20HMOVR2,#SLEMOVR3,#00H/01HMOVR4,#20DMOVR5,#20DACALLMU...SJMP$9.4单片机的多机通信主机通信子程序ORG2100HMU:MOVA,R2MOVSBUF,AJNBRI,$CLRRIMOVA,SBUFXRLA,R2JZMTXD2MTXD1:MOVSBUF,#0FFHSETBTB8SJMPMUMTXD2:CLRTB89.4单片机的多机通信MOVSBUF,R3JNBRI,$CLRRIMOVA,SBUFJNBACC.7,MTXD3SJMPMTXD1MTXD3:CJNER3,#00H,MRXD;从机发送则MRXDJNBACC.0,MTXD1;从机未准备好,重联MTXD4:MOVSBUF,@R0JNBTI,$CLRTIINCR0DJNZR4,MTXD4RET9.4单片机的多机通信MRXD:JNBACC.1,MTXD1MRXD1:JNBRI,$CLRRIMOVA,SBUFMOV@R1,AINCR1DJNZR5,MRXD1RETEND9.4单片机的多机通信②从机程序:由从机主程序和从机中断服务程序组成.9.4单片机的多机通信从机主程序ORG1000HSTART:MOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR1MOVSCON,#0F8H;方式3,允,SM2=1,TB8=1MOVPCON,#00HMOVR0,#20HMOVR1,#40HMOVR2,#20DMOVR3,#20DSETBEASETBESCLRRI..

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论