Chapter4 定时器、中断和串口 part2_第1页
Chapter4 定时器、中断和串口 part2_第2页
Chapter4 定时器、中断和串口 part2_第3页
Chapter4 定时器、中断和串口 part2_第4页
Chapter4 定时器、中断和串口 part2_第5页
已阅读5页,还剩194页未读 继续免费阅读

下载本文档

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

文档简介

第四章MCS-51单片机的定时器、中断和串口part2串行通信技术及MCS-51单片机串口串行通信基本知识1串行口及应用2RS-232C标准接口总线及串行通信硬件设计389C51与89C51点对点异步通信489C51与PC机间通信软件的设计5PC机与多个单片机间的通信6本章重点内容89C51串行口的结构及应用PC机与89C51间的双机通信一台PC机控制多台89C51前沿机的分布式系统,以及通信接口电路和软件设计,并给出程序框图、主程序和接收/发送子程序.串行通信技术及MCS-51单片机串口

串行通信概述什么叫串行通信?

在生活中同学们排横队行走—并行;

排纵队行走—串行。计算机中在传输信息、数据时也有并行、串行的问题。000011001P1.0P1.1P1.2P1.3RXDTXD单片机外设1外设21010110101000串行通信技术及MCS-51单片机串口数据通信在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信.通信方式有两种,即并行通信和串行通信.通常根据信息传送的距离决定采用哪种通信方式.例如,在IBM-PC机与外部设备(如打印机等)通信时,如果距离小于30m,可采用并行通信方式;当距离大于30m时,则要采用串行通信方式.89C51单片机具有并行和串行二种基本通信方式.串行通信技术及MCS-51单片机串口—基本概念并行通信是指数据的各位同时进行传送(发送或接收)的通信方式.

优点:传送速度快

缺点:数据有多少位,就需要多少根传送线.例如,89C51单片机与打印机之间的数据传送就属于并行通信.下图4-31(a)所示为89C51单片机与外设间8位数据并行通信的连接方法.并行通信在位数多、传送距离又远时就不太合适了.串行通信技术及MCS-51单片机串口—基本概念

89C51

P1.0~P1.7GND~D0D7GND(a)外部设备

89C51

GNDGND外部设备RXDRXDTXDTXD(b)4-31两种通信方式连接串行通信技术及MCS-51单片机串口—基本概念串行通信指数据是一位一位按顺序传送的通信方式.优点:只需一对传输线(利用电话线就可作为传输线),这样就大大降低了传输成本,特别适用于远距离通信;缺点:传送速度较低.假设并行传送N位数据所需时间为T,那么串行传送的时间至少为NT,实际上总是大于NT的.

上图4-31(b)所示为串行通信方式的连接方法.串行通信技术及MCS-51单片机串口—基本概念串行通信的传输方式串行通信的传送方向通常有三种:一种为单向(或单工,Simplex)配置,只允许数据向一个方向传送;另一种是半双向(或半双工Half-duplex)配置,允许数据向两个方向中的任一方向传递,但每次只能有一个站点发送;第三种传递方式是全双向(全双工Duplex)配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接收能力.下图4-32所示为串行通信中的数据传递方式.串行通信技术及MCS-51单片机串口—基本概念(a)(b)(c)4-32串行通信传输方式串行通信技术及MCS-51单片机串口—基本概念异步通信和同步通信串行通信有两种基本通信方式,即异步通信和同步通信.

一.异步通信

在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式如下图4-33所示.串行通信技术及MCS-51单片机串口—基本概念第n个字符第n+1个字符起始位停止位停止位起始位8位数据奇偶校验数据0/10/10/10/10/10/10/10/10/10/10/100110/10/1……(a)第n个字符第n+1个字符起始位停止位起始位8位数据奇偶校验0/10/10/10/10/10/10/10/10/100/11011……(b)11空闲位4-33异步通信的一帧数据格式串行通信技术及MCS-51单片机串口—基本概念在帧格式中,一个字符由四部分组成:起始位、数据位、奇偶校验位和停止位.

首先是一个起始位(0);然后是5位~8位数据(规定低位在前,高位在后);接下来是奇偶校验位(可省略);最后是停止位(1).起始位(0)信号只占用一位,用来通知接收设备一个待接收的字符开始到达.

线路上在不传送字符时应保持为1.

接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道发来一个新字符,应马上准备接收.

字符的起始位还被用做同步接收端的时钟,以保证以后的接收能正确进行.串行通信技术及MCS-51单片机串口—基本概念起始位后面紧接着是数据位,它可以是5位(D0~D4)、6位、7位或8位(D0~D7).奇偶校验(D8)只占一位,但在字符中也可以规定不用奇偶校验位,则这一位就可省去.也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等).例如,规定用ASCⅡ编码,字符为七位,加一个奇偶校验位、一个起始位、一个停止位,则一帧共十位.

串行通信技术及MCS-51单片机串口—基本概念异步通信和同步通信二.同步通信

同步通信中,在数据开始传送前用同步字符来指示(常约定1个~2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落.同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据开始时用同步字符SYNC来指示,其数据格式如图4-34所示.串行通信技术及MCS-51单片机串口—基本概念数据数据数据数据数据同步字符同步字符1同步字符2图4-34同步传送的数据格式串行通信技术及MCS-51单片机串口—基本概念

同步字符的插入可以是单同步字符方式或双同步字符方式,如图4-34所示,然后是连续的数据块.同步字符可以由用户约定,当然也可以采用ASCⅡ码中规定的SYNC代码,即16H.按同步方式通信时,先发送同步字符,接收方检测到同步字符后,即准备接收数据.在同步传送时,要求用时钟来实现发送端与接收端之间的同步.为了保证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号.同步传送可以提高传输速率(达56kb/s或更高),但硬件比较复杂.串行通信技术及MCS-51单片机串口—基本概念异步通信和同步通信三.波特率(Baudrate)

波特率,即符号传送速率,表示单位时间内载波调制状态改变次数,它的单位是B/s.波特率对于CPU与外界的通信是很重要的.串行通信技术及MCS-51单片机串口—基本概念波特率:指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。波特率与比特率的关系为:比特率=波特率X单个调制状态对应的二进制位数。比特率:在数字信道中,比特率是数字信号的传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数bit/s(bps)。假设波特率是120字符/s,而每个字符格式包含10个代码位(1个起始位、1个终止位、8个数据位).这时,传送的比特率为

10b/字符×120字符/s=1200b/s

每一位代码的传送时间Td为波特率的倒数.

异步通信的传送速率在50b/s~19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等.1b1200b·s-1Td==0.833ms串行通信技术及MCS-51单片机串口—基本概念串行通信的过程及通信协议一.串并转换与设备同步两个通信设备在串行线上成功地实现通信必须解决两个问题:一是串并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备和接收设备的工作节拍,以确保发送数据在接收端被正确读出.串行通信技术及MCS-51单片机串口—基本概念1.串并转换串行通信是将计算机内部的并行数据转换成串行数据,将其通过一根通信线传送;并将接收的串行数据再转换成并行数据送到计算机中.在计算机串行发送数据之前,计算机内部的并行数据被送入移位寄存器并一位一位地移出,将并行数据转换成串行数据.如图4-35所示.在接收数据时,来自通信线路的串行数据被送入移位寄存器,满8位后并行送到计算机内部.如图4-36所示.在串行通信控制电路中,串-并、并-串转换逻辑被集成在串行异步通信控制器芯片中.89C51单片机的串行口和IBM-PC机中的8250芯片都可完成这一功能.串行通信技术及MCS-51单片机串口—基本概念并行数据串行数据11122233345678445566777888图4-35发送时的并-串转换串行通信技术及MCS-51单片机串口—基本概念串行数据并行数据11112222333444555666777888图4-36接收时的串-并转换串行通信技术及MCS-51单片机串口—基本概念2.设备同步进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲.设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生相同的传送速率.串行通信技术及MCS-51单片机串口—基本概念二.串行通信协议

通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等.通信双方必须遵守统一的通信协议.串行通信协议包括同步协议和异步协议两种.在此只讨论异步串行通信协议和异步串行协议规定的字符数据的传送格式.1.起始位通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位.起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号.起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步.串行通信技术及MCS-51单片机串口—基本概念2.数据位当接收设备收到起始位后,紧接着就会收到数据位.数据位的个数可以是5,6,7或8.IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送.这些数据位被接收到移位寄存器中,构成传送数据字符.在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据.3.奇偶校验位数据位发送完之后,可以发送奇偶校验位.奇偶校验用于有限差错检测,通信双方需约定一致的奇偶校验方式.如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数.串行通信技术及MCS-51单片机串口—基本概念4.停止位约定在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位.停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平.接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来.5.波特率设置通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率.如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s.6.挂钩(握手)信号约定

串行通信技术及MCS-51单片机串口—基本概念串行口及应用89C51单片机除具有4个8位并行口外,还具有1个串行接口.

此串行接口是一个全双工串行通信接口,即能同时进行串行发送和接收数据.它可以作UATR(通用异步接收和发送器)用,也可以作同步移位寄存器用.

使用串行接口可以实现89C51单片机系统之间点对点的单机通信和89C51与系统机(如IBM-PC机等)的单机或多机通信.串行通信技术及MCS-51单片机串口—基本应用89C51串行口89C51有一个可编程的全双工串行通信接口,它可用作UART,也可用作同步移位寄存器.其帧格式可以有8位、10位或11位,并能设置各种波特率,给使用带来了很大的灵活性.一.结构

89C51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信.其内部结构简化示意图如图4-37所示.

图中有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据.发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入.串行通信技术及MCS-51单片机串口—基本应用读SBUF:MOVA,SBUF;读入写SBUF:MOVSBUF,A;发送TXD(P3.1)÷12÷2TH1TL1÷16÷16输入移位寄存器接收SBUF(99H)发送SBUF(99H)RXD(P3.0)SMOD=0T1溢出率fOSCSMOD=1移位时钟TIRI内部BUS装载SBUF图4-37串行口内部结构示意图串行通信技术及MCS-51单片机串口—基本应用89C51用定时器T1作为串行通信波特率发生器,T1溢出经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲.移位脉冲的速率即是波特率.最高波特率为12M/(12×2×16)=31250(baud)从图中可看出,接收器是双缓冲结构,在前一个字节被从接收SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节.串行通信技术及MCS-51单片机串口—基本应用串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的.发送:当向SBUF发“写”命令时(执行“MOVSBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1.接收:在满足串行口接收中断标志位RI=0的条件下,置允许接收位REN=1就会接收一帧数据进入移位寄存器,并装载到SBUF中,同时使RI=1.当89C51发出读SBUF命令时(MOVA,SBUF),便由接收缓冲器SBUF取出数据送入A.串行通信技术及MCS-51单片机串口—基本应用二.串行口控制字及控制寄存器

89C51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可.1.SCON(98H)

89C51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示,其控制字格式如图4-38所示.

①SM0和SM1(SCON.7,SCON.6)—串行口工作方式选择位.两个选择位对应4种通信方式,如表4-1所示.其中,fOSC是振荡频率.串行通信技术及MCS-51单片机串口—基本应用SM0SM1SM2RENTB8RB8TIRISCON(98H)接收中断标志发送中断标志接收数据第9位发送数据第9位接收控制1:允许0:不允许1:允许0:不允许多机控制工作方式控制图4-38串行口控制寄存器SCON串行通信技术及MCS-51单片机串口—基本应用表4-1串行口的工作方式SM0SM100011011工作方式方式0方式1方式2方式3说明同步移位寄存器10位异步收发11位异步收发11位异步收发波特率由定时器控制由定时器控制fOSC/32或fOSC/64fOSC/12串行通信技术及MCS-51单片机串口—基本应用②SM2(SCON.5)—多机通信控制位,用于方式2和方式3.若置SM2=1,则允许多机通信.多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位为0,则本帧为数据帧.

多机通信过程:当一片89C51(主机)与多片89C51(从机)通信时,所有从机的SM2位都置1.主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中.

各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息.若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据.其他从机仍然保持SM2=1.串行通信技术及MCS-51单片机串口—基本应用若SM2=0.即不属于多机通信情况。则接收一帧数据后,不管第9位数据是0还是1,都置RI=1,接收到的数据装入SBUF中.根据SM2这个功能,可实现多个89C51应用系统的串行通信.

在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1,以便接收下一帧数据.在方式0时,SM2必须是0.串行通信技术及MCS-51单片机串口—基本应用多机通信过程:1.使所有从机SM2=1,在此时,只有RB8=1或收到有效停止位,才激活RI;2.主机发地址,第9位(TB8)为1;3.从机收到后,与自己的地址比较;4.被寻址从机清除SM2,其余从机维持SM2=1不变;5.主机发送数据,被寻址从机因SM2=0,故可以接收,其他从机则不理;6.当主机改变联系从机时,先前被寻址的从机分析出是寻址其他从机时,恢复SM2=1.串行通信技术及MCS-51单片机串口—基本应用

③REN(SCON.4)—允许接收控制位.由软件置1或清0,只有当REN=1时才允许接收,相当于串行接收的开关;若REN=0,则禁止接收.

在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF中.串行通信技术及MCS-51单片机串口—基本应用④TB8(SCON.3)—发送数据的第9位(D8)装入TB8中.在方式2或方式3中,根据发送数据的需要由软件置位或复位.

在许多通信协议中可用作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位.对于后者,TB8=1,说明该帧数据为地址;TB8=0,说明该帧数据为数据字节.

在方式0或方式1中,该位未用.串行通信技术及MCS-51单片机串口—基本应用⑤RB8(SCON.2)—接收数据的第9位.

在方式2或方式3中,接收到的第9位数据放在RB8位.

它或是约定的奇/偶校验位,或是约定的地址/数据标识位.在方式2和方式3多机通信中,若SM2=1,如果RB8=1,说明收到的数据为地址帧.

在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位.在方式0中,该位未用.串行通信技术及MCS-51单片机串口—基本应用⑥TI(SCON.1)—发送中断标志.在一帧数据发送完时被置位.

在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询.

它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据.串行口发送中断被响应后,TI不会自动清0,必须由软件清0.串行通信技术及MCS-51单片机串口—基本应用⑦RI(SCON.0)—接收中断标志.

在接收到一帧有效数据后由硬件置位.在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位.RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据.CPU响应中断,取走数据.RI也必须由软件清0,清除中断申请,并准备接收下一帧数据.串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别.复位时,SCON所有位均清0.串行通信技术及MCS-51单片机串口—基本应用SMODPCON(87H)波特率选择位SMOD=1时,方式1、方式2、方式3的波特率加倍图4-39电源控制寄存器PCON2.PCON(87H)电源控制寄存器PCON中只有SMOD位与串行口工作有关,如图4-39所示.

SMOD(PCON.7)—波特率倍增位.在串行口方式1、方式2和方式3时,波特率和2SMOD成正比,亦即当SMOD=1时,波特率提高一倍.复位时,SMOD=0.串行通信技术及MCS-51单片机串口—基本应用三.串行通信工作方式根据实际需要,89C51串行口可设置4种工作方式,可有8位、10位或11位帧格式.方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位.其帧格式如下:D0D1D2D3D4D5D6D7……串行通信技术及MCS-51单片机串口—基本应用方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1).其帧格式为D0D1D2D3D4D5D6D7起始停止方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1).其帧格式为D0D1D2D3D4D5D6D7起始停止D8

附加第9位(D8)由软件置1或清0.发送时在TB8中,接收时送RB8中.串行通信技术及MCS-51单片机串口—基本应用1.串行口方式0

方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口.

串行数据通过RXD输入或输出,而TXD用于输出移位时钟,作为外接部件的同步信号.

图4-40(a)为发送电路,图4-41(a)为接收电路.这种方式不适用于两个89C51之间的直接数据通信,但可以通过外接移位寄存器来实现单片机的接口扩展.例如,74LS164可用于扩展并行输出口,74LS165可用于扩展输入口.在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的.串行通信技术及MCS-51单片机串口—基本应用345610111213TI(b)图4-40方式0发送电路及时序+5V(a)S1…S6S1…S6机器周期写“SBUF”RXD(数据)TXD(移位时钟)D0D1D2D3D4D5D6D789C51P3.074LS164D2D1CPP3.1P1.0CLR1278914TXDRXD串行通信技术及MCS-51单片机串口—基本应用方式0发送过程:

执行一条将数据写入发送缓冲器SBUF(99H)的指令时,串行口把SBUF中8位数据以fOSC/12的波特率从RXD(P3.0)端输出,发送完毕置中断标志TI=1.

方式0发送时序如图4-40(b)所示.写SBUF指令在S6P1处产生一个正脉冲,在下一个机器周期的S6P2处数据的最低位输出到RXD(P3.0)脚上;再在下一个机器周期的S3,S4,S5输出移位时钟为低电平,而在S6及下一个机器周期的S1,S2为高电平,就这样将8位数据由低位至高位一位一位顺序通过RXD线输出,并在TXD脚上输出fOSC/12的移位时钟.

在“写SBUF”有效后的第10个机器周期的S1P1将发送中断标志TI置位.图中,74LS164是TTL“串入并出”移位寄存器.串行通信技术及MCS-51单片机串口—基本应用(a)S1…S6S1…S6机器周期写“SCON”RXD(数据)TXD(移位时钟)RI(b)图4-41方式0接收电路及时序P3.074LS165QCPP3.1P1.09271514+5VTXDRXD1P1.1D0D1D2D3D4D5D6D7串行通信技术及MCS-51单片机串口—基本应用方式0接收过程:用软件置REN=1(同时,RI=0).即开始接收.

接收时序如图4-41(b)所示.当使SCON中的REN=1(RI=0)时,产生一个正的脉冲,在下一个机器周期的S3P1~S5P2,从TXD(P3.1)脚上输出低电平的移位时钟,在此机器周期的S5P2对P3.0脚采样,并在本机器周期的S6P2通过串行口内的输入移位寄存器将采样值移位接收;在同一个机器周期的S6P1到下一个机器周期的S2P2,输出移位时钟为高点平.将数据字节从低位至高位一位一位地接收下来并装入SBUF中,在启动接收过程(即写SCON,清RI位)将SCON中的RI清0之后的第10个机器周期的S1P1,RI被置位.这一帧数据接收完毕,可进行下一帧接收.图中,74LS165是TTL“并入串出”移位寄存器.串行通信技术及MCS-51单片机串口—基本应用

2.串行口方式1方式1真正用于串行发送或接收,为10位通用异步接口.TXD与RXD分别用于发送与接收数据.

收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位.

在接收时,停止位进入SCON的RB8,此方式的传送波特率可调.

串行口方式1的发送和接收时序如图4-42所示.串行通信技术及MCS-51单片机串口—基本应用接收D0D1D2D3D4D5D6D7TX时钟写“SBUF”SENDTXDTI起始位停止位发送D0D1D2D3D4D5D6D7停止位起始位RX时钟位检测器采样RXDRI图4-42方式1发送和接收时序串行通信技术及MCS-51单片机串口—基本应用方式1发送时:

数据从引脚TXD(P3.1)端输出.

当执行数据写入发送缓冲器SBUF的命令时,就启动了发送器开始发送.

发送时的定时信号,也就是发送移位时钟(TX时钟),是由定时器T1送来的溢出信号经过16分频或32分频(取决于SMOD的值)而得到的,TX时钟就是发送波特率.方式1的波特率是可变的.发送开始的同时,SEND变为有效,将起始位向TXD输出;此后每经过一个TX时钟周期(16分频计数器溢出一次为一个时钟周期,因此,TX时钟频率由波特率决定).产生一个移位脉冲,并由TXD输出一个数据位.8位数据全部发送完毕后,置位TI,并申请中断置TXD为1作为停止位,再经过一个时钟周期,SEND失效.串行通信技术及MCS-51单片机串口—基本应用方式1接收时:数据从引脚RXD(P3.0)端输入.

接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RXD上检测到1

0的跳变,即起始位)而开始的.

接收时,定时信号有两种(如图4-42(b)所示):一种是接收移位时钟(RX时钟),它的频率和传送波特率相同,也是由定时器T1的溢出信号经过16或32分频而得到的;另一种是位检测器采样脉冲,它的频率是RX时钟的16倍,亦即在一位数据期间有16位检测器采样脉冲,为完成检测,以16倍于波特率的速率对RXD进行采样.

为了接收准确无误,在正式接收数据之前,还必须判定这个1

0跳变是否是干扰引起的.为此,在这位中间(即一位时间分成16等份,在第7,第8及第9等份)连续对RXD采样三次,取其中两次相同的值进行判断.这样能较好地消除干扰的影响.

当确认是真正的起始位(0)后,就开始接收一帧数据.当一帧数据接收完毕后,必须同时满足以下两个条件,这次接收才真正有效.串行通信技术及MCS-51单片机串口—基本应用①RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走.由软件使RI=0,以便提供“接收SBUF已空”的信息.②SM2=0或收到的停止位为1(方式1时,停止位进入RB8),则将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI;如果不满足,接收到的数据不能送入SBUF,这意味着该帧信息将会丢失.

值得注意的是,在整个接收过程中,保证REN=1是一个先决条件.只有当REN=1时,才能对RXD进行检测.串行通信技术及MCS-51单片机串口—基本应用3.串行口方式2和方式3串行口工作方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,所不同的只是波特率).

每帧11位,即1位起始位,8位数据位(低位在前),1位可编程的第9数据位和1位停止位.发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8,从而进行奇偶校验;接收时,第9数据位进入SCON的RB8.

方式2和方式3的发送、接收时序如图4-43所示.其操作与方式1类似.串行通信技术及MCS-51单片机串口—基本应用发送过程:先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标志位)然后将要发送的数据写入SBUF,即可启动发送过程.

串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去.发送完毕,使TI=1.接收过程:使SCON中的REN=1,允许接收.

当检测到RXD(P3.0)端有1

0的跳变(起始位)时,开始接收9位数据,送入移位寄存器(9位).

当满足RI=0且SM2=0,或接收到的第9位数据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效,也不置位RI.串行通信技术及MCS-51单片机串口—基本应用接收TX时钟写“SBUF”SENDTXDTI起始位停止位发送D0D1D2D3D4D5D6D7停止位起始位RX时钟位检测器采样RXDRI图4-43方式2、方式3发送和接收时序D0D1D2D3D4D5D6D7TB8RB8串行通信技术及MCS-51单片机串口—基本应用

方式01、8位数据2、波特率固定为

fOSC/12

3、TXD输出固定频率、

RXD为数据输入输出方式1方式3方式2串行通信四种方式1、一个起始位“0”、8个数据位、一个停止位“1”2、波特率可变3、TXD数据输出、

RXD数据输入1、一个起始位“0”、9个数据位、一个停止位“1”2、波特率固定3、TXD数据输出、

RXD数据输入1、一个起始位“0”、9个数据位、一个停止位“1”2、波特率可变3、TXD数据输出、

RXD数据输入串行通信技术及MCS-51单片机串口—基本应用工作方式帧位数数据位发送条件接收条件D9程序方式088TI=0RI=0REN=1CLRTIMOVSBUF,AJNBTI,$CLRTI方式1108SETBRENCLRRIJNBRI,$MOVA,SBUFCLRRI方式23119TB8RB8CLRTISETBTB8MOVSBUF,AJNBTI,$CLRTI串行通信技术及MCS-51单片机串口—基本应用四.波特率设计在串行通信中,收发双方对发送或接收的数据速率有一定的约定,通过软件对89C51串行口编程可约定四种工作方式.

其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定.

串行口的四种工作方式对应着三种波特率.由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同.串行通信技术及MCS-51单片机串口—基本应用1.方式0的波特率由图4-44可见,方式0时,发送或接收一位数据的移位时钟脉冲由S6(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位脉冲时钟,发送或接收一位数据,因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响.

方式0波特率≌fOSC/12

注意,符号“≌”表示左面的表达式只是引用右面表达式的数据,即右面的表达式是提供了一种计算的方法.串行通信技术及MCS-51单片机串口—基本应用÷12发送SBUF(99H)fOSCS6TXD(P3.1)RXD

(P3.0)输入移位寄存器图4-44串行口方式0波特率的产生÷2发送SBUF(99H)fOSCTXD(P3.1)RXD(P3.0)输入移位寄存器÷2÷16÷16SMOD=1SMOD=0图4-45串行口方式2波特率的产生串行通信技术及MCS-51单片机串口—基本应用2.方式2的波特率串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分如图4-45所示.

控制接收与发送的移位时钟由振荡频率fOSC的第二节拍P2时钟(即fOSC/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fOSC的1/64;若SMOD=1,则波特率为fOSC的1/32,即方式2波特率≌×fOSC2SMOD64串行通信技术及MCS-51单片机串口—基本应用3.方式1和方式3的波特率

方式1和方式3的移位时钟脉冲由定时器TI的溢出率决定,如图4-16所示.因此,89C51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定.即

方式1、方式3波特率≌T1溢出率/n

当SMOD=0时,n=32;SMOD=1时,n=16.所以,可用下式确定方式1和方式3的波特率:

方式1、方式3波特率≌×(T1溢出速率)

其中,T1溢出速率取决于T1的计数速率(计数速率≌fOSC/12)和T1预置的初值.若定时器T1采用模式1时,波特率公式如下:串行方式1、方式3波特率≌×

/(216

-初值)2SMOD322SMOD32fOSC12串行通信技术及MCS-51单片机串口—基本应用

表4-2列出了串行口方式1、方式3常用波特率及其初值.

定时器T1用作波特率发生器时,通常选用定时器模式2(自动重装初值定时器)比较实用.

要设置定时器T1为定时方式(使C/T=0),让T1计数内部振荡脉冲,即计数速率为fOSC/12(注意应禁止T1中断,以免溢出而产生不必要的中断).

先设定TH1和TL1定时计数初值为X,那么每过“28-X”个机器周期,定时器T1就会产生一次溢出.因此,T1溢出速率为T1溢出速率≌/(28-X)

串行口方式1、方式3波特率≌

×于是,可得出定时器T1模式2的初始值:

X≌256-2SMOD32fOSC12×(256-X)12fOSCfosc×(SMOD+1)384×波特率串行通信技术及MCS-51单片机串口—基本应用表4-2常用波特率与其他参数选取关系定时器T1SMOD串行口工作方式波特率/(b·s-1)fosc/MHzC/T模式定时器初值方式0方式21M12××××375k187.5k121210××××××方式1和方式362.5k19.2k9.6k4.8k2.4k1.2k137.51101211.059211.059211.059211.059211.059211.0592121100000

00000000

022222221FFHFDHFDHFAHF4HE8H1DHFEEBH下页续串行通信技术及MCS-51单片机串口—基本应用方式0方式20.5M187.5k66×××××××119.2k9.6k4.8k2.4k1.2k0.6k11055方式1和方式3666666661100000

00000000

022222221FEHFDHFDHFAHF3HE6H72HFEEBH(接上页图)串行通信技术及MCS-51单片机串口—基本应用

例4-12:89C51单片机时钟脉冲振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值.解:设置波特率控制位(SMOD)=0

所以,(TH1)=(TL1)=F4H系统晶体振荡频率选为11.0592MHz就是为了使初值为整数,从而产生精确的波特率.

如果串行通信选用很低的波特率,可将定时器T1置于模式0或模式1,即13位或16位定时方式;但在这种情况下,T1溢出时,需用中断服务程序重装初值.中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整.X≌256-11.0592×106×(0+1)384×2400=244=F4H串行通信技术及MCS-51单片机串口—基本应用89C51串行口的应用

如前所述,89C51串行口的工作主要受串行口控制寄存器SCON的控制,另外,也和电源控制寄存器PCON有些关系.SCON寄存器用来控制串行口的工作方式,还有一些其他的控制作用.

MSC-51单片机串行口的四种工作方式传送的数据位数叙述如下:①方式0:移位寄存器输入/输出方式.串行数据通过RXD线输入或输出,而TXD线专用于输出时钟脉冲给外部移位寄存器.方式0可用来同步输出或接收8数据(最低位首先输出,)波特率固定为fOSC/12,其中,fOSC为单片机的时钟频率.串行通信技术及MCS-51单片机串口—应用举例

②方式1:10位异步接收/发送方式.一帧数据包括1位起始位(0),8位数据位和1位停止位(1).串行接口电路在发送时能自动插入起始位和停止位;在接收时,停止位进入特殊功能寄存器SCON的RB8位.方式1的传送波特率是可变的,可通过改变内部定时器的定时值来改变波特率.③方式2:11位异步接收/发送方式.除了1位起始位、8位数据位、1位停止位之外,还可以插入第9位数据位.④方式3:同方式2,只是波特率可变.串行通信技术及MCS-51单片机串口—应用举例一.串行口方式0的应用

89C51单片机串行口基本上是异步通信接口,但在方式0时是同步操作.外接串入-并出或并入-串出器件,可实现I/O的扩展.串行口方式0的数据传送可以采用中断方式,也可以采用查询方式.无论哪种方式,都要借助于TI或RI标志.

在串行口发送时,或者靠TI置位后引起中断申请,在中断服务程序中发送下一组数据;或者通过查询TI的值,只要TI为0就继续查询,直到TI为1后结束查询,进入下一个字符的发送.在串行口接收时,由RI引起中断或对RI查询来决定何时接收下一个字符.

无论采用什么方式,在开始串行通信前,都要先对SCON寄存器初始化,进行工作方式的设置.在方式0中,SCON寄存器的初始化只是简单地把00H送入SCON就可以了.串行通信技术及MCS-51单片机串口—应用举例

例4-13:用89C51串行口外接164串入-并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环.设发光二极管为共阴极接法,如图4-47所示.89C51RXDTXDP1.0CLKACLR74HC164图4-47B串行通信技术及MCS-51单片机串口—应用举例

解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现.程序清单:ORG0023H;串行口中断入口AJMPSBR;转入串行口中断服务程序ORG2000H;主程序起始地址MOVSCON,#00H;串行口方式0初始化MOVA,#80H;最左一位发光二极管先亮CLRP1.0;关闭并行输出MOVSBUF,A;开始串行输出SJMP$;等待中断SETBP1.0;启动并行输出ACALLDELAY;显示延迟一段时间CLRTI;清发送中断标志RRA;准备右边一位显示CLRP1.0;关闭并行输出MOVSBUF,A;再一次串行输出RETI;中断返回LOOPSBR:串行通信技术及MCS-51单片机串口—应用举例用方式0外加移位寄存器来扩展8位输出口时,要求移位寄存器带有输出控制,否则串行移位过程也会反映到并行输出口;另外,输出口最好再接一个寄存器或锁存器,以免在输出门关闭时(CLR=0)输出又发生变化.用方式0加上并入-串出移位寄存器可扩展一个8位并行输入口.移位寄存器必须带有预置/移位的控制端,由单片机的一个输出端子加以控制,以实现先由8位输入口置数到移位寄存器,然后再串行移位从单片机的串行口输入到接收缓冲器,最后再读入到CPU中.串行通信技术及MCS-51单片机串口—应用举例

例4-14:用89C51串行口外加移位寄存器165或166)扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号.当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号.如图4-48所示.89C51RXDTXDP1.0P1.1QHCLK74HC165SHIFTK图4-48串行通信技术及MCS-51单片机串口—应用举例解:串行口方式0的接收要用SCON寄存器中的REN位作为开关来控制.因此,初始化时,除了设置工作方式之外,还要使REN位为1,其余各位仍然为0.对RI采用查询方式来编写程序,当然,先要查询开关K是否闭合.程序清单:START:MOVSCON,#10H;串行口方式0初始化,REN=1JBP1.1,$;开关K未闭合,等候SETBP1.0;SHIFT=1,并行置入数据CLRP1.0;SHIFT=0,开始串行移位JNBRI,$;查询RI

CLRRI;查询结束,清RIMOVA,SBUF;读数据到累加器ACALLLOGSIM;进行逻辑模拟SJMPSTART;准备下一次模拟串行通信技术及MCS-51单片机串口—应用举例二.串行口方式1的发送和接收

例4-15:89C51串行口按双工方式收发ASCⅡ字符,最高位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200b/s.编写有关的通信程序.

解:7位ASCⅡ码加1位奇校验共8位数据,故可采用串行口方式1.

89C51单片机的奇偶检验位P是当累加器A中1的数目为奇数时,P=1.如果直接把P的值放入ASCⅡ码的最高位,恰好成了偶校验,与要求不符.因此,要把P的值取反以后放入ASCⅡ码最高位,才是要求的奇校验.串行通信技术及MCS-51单片机串口—应用举例

双工通信要求收、发能同时进行.实际上,收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器.数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作.发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fOSC为6MHz,通过查波特率初值(表7-2)可知定时器的初装值为F3H.定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作.串行通信技术及MCS-51单片机串口—应用举例程序清单:MOVTMOD,#20H;定时器1设为模式2

MOVTL1,#0F3H;定时器初值MOVTH1,#0F3H

;8位重装值SETBTR1;启动定时器1MOVSCON,#50H;将串行口设置为方式1,REN=1MOVR0,#20H;发送数据区首址MOVR1,#40H;接收数据区首址ACALLSOUT;先输出一个字符SETBESSETBEASJMP$;等待中断LOOP:主程序串行通信技术及MCS-51单片机串口—应用举例中断服务程序ORG0023H;串行口中断入口AJMP

SBR1;转至中断服务程序ORG0100HJNBRI,SEND;TI=1,为发送中断ACALLSIN;RI=1,为接收中断SJMPNEXT;转至统一的出口ACALLSOUT;调用发送子程序RETI中断返回SBR1:SEND:NEXT:串行通信技术及MCS-51单片机串口—应用举例CLRTIMOVA,@R0;取发送数据到AMOVC,P;奇偶标志赋予CCPLC;奇校验MOVACC.7,C;加到ASCⅡ码高位INCR0;修改发送数据指针MOVSBUF,A;发送ASCⅡ码RET;返回SOUT:发送子程序串行通信技术及MCS-51单片机串口—应用举例接收子程序CLRRI

MOVA,SBUF;读出接收缓冲区内容MOVC,P;取出检验位CPLC;奇校验ANLA,#7FH;删去校验位MOV@R1,A;读入接收缓冲区INCR1;修改接收数据指针RET;返回SIN:串行通信技术及MCS-51单片机串口—应用举例在主程序中已初始化REN=1,则允许接收.以上程序基本上具备了全双工通信的能力,但不能说很完善.例如,在接收子程序中虽然检验了奇偶校验位,但没有进行出错处理;另外,发送和接收数据区的范围都很有限,也不能满足实际需要.但有一个基本的框架之后,逐渐完善还是可以做到的.串行通信技术及MCS-51单片机串口—应用举例

例4-16:采用查询方式由串行口发送带奇偶校验位的数据块.解:本例由内部RAM单元20H~30H取出ASCⅡ码数据,在最高位上加奇校验位后由串行口发出.采用8位异步通信方式,波特率为1200b/s,fOSC=11.059MHz.由要求可知,应把串行口设置为方式1,采用定时器1模式2作为波特率发生器,预置值(TH1)=0E8H.串行通信技术及MCS-51单片机串口—应用举例程序清单:MOVTMOD,#20H;设置定时器1为模式2

MOVTL1,#0E8H;初值,波特率为1200b/sMOVTH1,#0E8HSETBTR1;启动T1运行MOVSCON,#01000000B;设置串行口为方式1MOVR0,#20HMOVR7,#32;数据块长度主程序串行通信技术及MCS-51单片机串口—应用举例MOVA,@R0

ACALLSP_OUT

JNBP,ERROR

;传输出错处理,

;由SP-OUT中“CPLC”结果决定INCR0DJNZR7,LOOPLOOP:…串行通信技术及MCS-51单片机串口—应用举例串行口发送子程序(奇校验)MOVC,PSW.0;设置奇校验位,校验位P=1为奇校验CPLC;奇校验(无此指令为偶校验)MOVACC.7,C;ACC.7补0或1MOVSBUF,A;启动串行口发送过程JNBTI,$;等待发送完CLRTI;清TI标志,允许再发送RETSP_OUT:ERROR:(略)串行通信技术及MCS-51单片机串口—应用举例

例4-17:由串行口接收带奇偶校验位的数据块解:采用查询方式,本例与上例相呼应,接收器把接收到的32B数据存放在20H~3FH单元内,波特率同上,若奇校验出错则置进位位为1.

串行通信技术及MCS-51单片机串口—应用举例程序清单:主程序MOVSCON,#01010000B;串行口方式1,允许接收MOVTMOD,#20H;设置定时器T1为模式2MOVTL1,#0E8H;初值,波特率为1200b/sMOVTH1,#0E8HSETBTR1;启动T1运行MOVR0,#20HMOVR7,#32;数据块长度

串行通信技术及MCS-51单片机串口—应用举例ACALLSP-IN;调接受一帧子程序JCERROR;由中SP-IN“CPLC”结果决定MOV@R0,A;存放接收的数据INCR0DJNZR7,LOOPLOOP:…串行通信技术及MCS-51单片机串口—应用举例接收一帧子程序JNBRI,$;RI由硬件置位CLRRI;软件清除RI

MOVA,SBUFMOVC,P;检查奇校验位CPLC;置C为主程序“JCERROR”用ANLA,#7FH;去掉奇校验位RETSP-IN:ERROR:(略)串行通信技术及MCS-51单片机串口—应用举例

例4-18:利用串行口和堆栈技术发送字符串常量.解:上面两个例子中,发送和接收的都是一些变量数据,且存放在内部RAM单元中.现说明如何利用堆栈技术发送存放在程序存储器内的字符串常量.下面的例子中,这些字符串是发送给CRT终端的,以回车符(CR)和换行符(LF)开始,以换码符(ESC)为结尾.下面是程序片断:串行通信技术及MCS-51单片机串口—应用举例CREQU0DH;ASCⅡ回车符LFEQU0AH;ASCⅡ换行符ESCEQU1BH;ASCⅡ换码符…MOVTMOD,#20H;设置定时器T1为模式2

MOVTL1,#0FDH;设波特率为9600b/s

(fOSC=11.0592MHz)串行通信技术及MCS-51单片机串口—应用举例MOVTH1#0FDH

SETBTR1;启动T1运行MOVSCON,#01000000B;设置串行口方式1

ACALLXSTRING

DBCR,LF

DB‘NU&BIAA’;字符串常量DBESC…串行通信技术及MCS-51单片机串口—应用举例POPDPH;把第1个字符的地址装入DPTR

POPDPL

CLRA;设偏移量为零MOVCA,@A+DPTR;取第1个字符MOVSBUF,A;启动一帧发送过程JNBTI,$;等待发送一帧完CLRTI

INCDPTR;指向下一字符CLRA;偏移量为0

MOVCA,@A+DPTR;取下一字符CJNEA,#ESC,XSTR-2;读到ESC

温馨提示

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

评论

0/150

提交评论