第7章 单片机原理及接口技术讲稿(第三版)-李朝青

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章89C51串行口及串行通信技术
本书前几章涉及的数据传送都是采用并行方式,如8051与存储器,存储器与存储器,8051与并行打印机之间的通信。

89C51处理8位数据,若以并行传送方式一次传送一个字节的数据,至少需要8条数据线。

当89C51与打印机连接时,除8条数据线外,还需要状态、应答等控制线。

一些微机系统,如IBM-PC系列机,由于磁盘机、CRT、打印机与主机系统的距离有限,所以,使用多条电缆线以提高数据传送速度还是合算的。

但是,计算机之间、计算机与其终端之间的距离有时非常远,此时,电缆线过多是不经济的
串行通信只用一位数据线传送数据的位信号,即使加上几条通信联络控制线,也用不了很多电缆线。

因此,串行通信适合远距离数据传送,如大型主机与其远程终端之间、处于两地的计算机之间采用串行通信就非常经济。

当然,串行通信要求有转换数据格式、时间控制等逻辑电路,这些电路目前已被集成在大规模集成电路中(称为可编程串行通信控制器),使用很方便。

本章将介绍89C51串行口的结构及应用,PC机与89C51间的双机通信,一台PC机控制多台89C51前沿机的分布式系统,以及通信接口电路和软件设计,并给出设计实例,包括接口电路、程序框图、主程序和接收/发送子程序。

7.1 串行通信基本知识
7.1.1数据通信
在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。

通信方式有两种,即并行通信和串行通信。

通常根据信息传送的距离决定采用哪种通信方式。

例如,在IBM-PC机与外部设备(如打印机等)通信时,如果距离小于30m,可采用并行通信方式;当距离大于30m时,则要采用串行通信方式。

89C51单片机具有并行和串行二种基本通信方式。

并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。

其优点是传送速度快;
缺点是数据有多少位,就需要多少根传送线。

例如,89C51单片机与打印机之间的数据传送就属于并行通信。

图7-1(a)所示为89C51与外设间8位数据并行通信的连接方法。

并行通信在位数多、传送距离又远时就不太合适了。

串行通信指数据是一位一位按顺序传送的通信方式。

它的突出优点是只需一对传输线(利用电话线就可作为传输线),这样就大大降低了传送成本,特别适用于远距离通信;
其缺点是传送速度较低。

假设并行传送N位数据所需时间位T,那么串行传送的时间至少为NT,实际上总是大于NT的。

图7-1(b)所示为串行通信方式的连接方法。

7.1.2串行通信的传输方式
串行通信的传送方向通常有三种:
单向(或单工)配置,只允许数据向一个方向传送;
半双向(或半双工)配置,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;
全双向(全双工)配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接受能力。

图7-2所示为串行通信中的数据传送方式。

图7-2 串行通信中的数据传送方式
7.1.3异步通信和同步通信
串行通信有两种基本通信方式,即异步通信和同步通信。

1、异步通信
在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式如图7-3所示
图7-3 异步通信数据格式
在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。

首先是一个起始为(0),然后是5位--8位数据(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位(1)。

始位(0)信号只占用一位,用来通知接收设备一个待接收的字符开始到达。

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

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

字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。

起始位后面紧接着是数据位,它可以是5位(D0--D4)、6位、7位或8位(D0--D7)。

奇偶校验(D8)只占一位,但在字符中也可以规定不用奇偶校验位,则这一位就可省去。

也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。

停止位用来表征字符的结束,它一定是高电位(逻辑1)。

停止位可以是1位、1.5位或2位。

接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备--只要再接收到0,就是新的字符的起始位。

若停止位以后不是紧接着传送下一个字符,则使线路电平保持为高电平(逻辑1)。

图7-3(a)表示一个字符紧接一个字符传送的情况,上一个字符的停止位和下一个字符的起始位是紧邻的;
图7-3(b)则是两个字符间有空闲位的情况,空闲位为1,线路处于等待状态。

存在空闲位正是异步通信的特征之一。

例如,规定用ASCII编码,字符为七位,加一个奇偶校验位、一个起始位、一个停止位,则一帧共十位。

2、同步通信
同步通信中,在数据开始传送前用同步字符来指示(常约定1个--2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。

同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图7-4所示。

同步字符的插入可以是单同步字符方式或双同步字符方式,如图7-4所示,然后是连续的数据块。

同步字符可以由用户约定,当然也可以采用ASCII码中规定的SYNC代码,即16H。

按同步方式通信时,先发送同步字符,接收方检测到同步字符后,即准备接收数据。

在同步传送时,要求用时钟来实现发送端与接收端之间的同步。

为了保证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号。

同步传送可以提高传输速率(达56kb/s或更高),但硬件比较复杂。

3、波特率(Baud rate)
波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。

波特率对于CPU与外界的通信是很重要的。

假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终止位、8个数据位)。

这时,传送的波特率为:
10b/字符×120字符/s=1200b/s
每一位代码的传送时间Td为波特率的倒数。

Td=1b/(1200bs-1)=0.833ms
异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。

7.1.4串行通信的过程及通信协议
1、串←→并转换与设备同步
两个通信设备在串行线路上成功地实现通信必须解决两个问题:
一是串←→并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;
二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。

(1)串←→并转换
串行通信是将计算机内部的并行数据转换成串行数据,将其通过一根通信线传送;并将接收的串行数据再转换成并行数据送到计算机中。

在计算机串行发送数据之前,计算机内部的并行数据被送入移位寄存器并一位一位地输出,将并行数据转换成串行数据。

如图7-5所示。

在接收数据时,来自通信线路的串行数据被压入移位寄存器,满8位后并行送到计算机内部。

如图7-6所示。

在串行通信控制电路中,串--并、并--串转换逻辑被集成在串行异步通信控制器芯片中。

89C51单片机的串行口和IBM-PC相同。

(2)设备同步
进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。

设备同步对通信双方有两个共同要求:
一是通信双方必须采用统一的编码方法;
二是通信双方必须能产生相同的传送速率。

采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包括统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。

通信双方只有产生相同的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。

发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。

2、串行通信协议
通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。

通信双方必须遵守统一的通信协议。

串行通信协议包括同步协议和异步协议两种。

在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式。

(1)起始位
通信线上没有数据被传送时处于逻辑1状态。

当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位。

起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。

起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。

(2)数据位
当接收设备收到起始位后,紧接着就会收到数据位。

数据位的个数可以是5、6、7或8。

IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送。

这些数据位被接收到移位寄存器中,构成传送数据字符。

在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。

(3)奇偶校验位
数据位发送完之后,可以发送奇偶校验位。

奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。

如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。

(4)停止位约定
在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。

停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。

接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。

(5)波特率设置
通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。

如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。

(6)挂钩(握手)信号约定
(见本章7.4节实例)
7.2 串行口及应用
89C51单片机除具有4个8位并行口外,还具有串行接口。

此串行接口是一个全双工串行通信接口,即能同时进行串行发送和接收数据。

它可以作UATR(通用异步接收和发送器)用,也可以作同步移位寄存器用。

使用串行接口可以实现89C51单片机系统之间点对点的单机通信和89C51与系统机(如IBM-PC机等)的单机或多机通信。

7.2.1 89C51串行口
1、结构
89C51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。

其内部结构简化示意图如图7-7所示。

图中有两个物理独立的接收、发送缓冲器SBUF,它们占用同一低值99H,可同时发送、接收数据。

发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。

串行发送与接收的速率与移位时钟同步。

89C51用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。

移位脉冲的速率即是波特率。

图7-7 串行口内部结构示意简图
从图中可看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。

串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。

当向SBUF发“写”命令时(执行“MOV SBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。

在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。

当发读SBUF命令时(执行“MOV A,SBUF”命令),便由接收缓冲器(SBUF)取出信息通过89C51内部总线送CPU。

对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用双缓冲器结构来保持最大传送速率。

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

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

图7-8 串行口控制寄存器SCON
①SM0和SM1(SCON.7,SCON.6)¡ª¡ª串行口工作方式选择位。

两个选择位对应4种通信方式,
如表7-1所示。

其中,fosc是振荡频率。

②SM2(SCON.5)——多机通信控制位,主要用于方式2和方式3。

若置SM2=1,则允许多机通信。

当一片89C51(主机)与多片89C51(从机)通信时,所有
从机的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这个功能,可实现多个89C51应用系统的串行通信。

在方式1时,若SM2=1,则只有接收到有效停止位时,RI才制1,以便接收下一贞数据。

在方
式0时,SM2必须是0。

③REN(SCON.4)——允许接收控制位。

由软件置1或清0,只有当REN=1时才允许接收,相当于串行接收的开关;若REN=0,则
禁止接收。

在串行通信接收控制过程中,如果满足RI=0和REN=1(允许接收)的条件,就允许接收,
一帧数据就装载入接收SBUF中。

④TB8(SCON.3)——发送数据的第9位(D8)装入TB8中。

在方式2或方式3中,根据发送数据的需要由软件置位或复位。

在许多通信协议中可用作
奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。

对于后者,TB8=1,说明
该帧数据为地址;TB8=0,说明该帧数据为数据字节。

在方式0或方式1中,该为未用。

⑤RB8(SCON.2)——接收数据的第9位。

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

它或是约定的奇/偶校验位,或是
约定的地址/数据标识位。

在方式2和方式3多机通信中,若SM2=1,如果RB8=1,说明收到
的数据为地址帧。

在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位。

在方式0中,该位未用。

⑥TI(SCON.1)——发送中断标志。

在一帧数据发送完时被置位。

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

它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。

串行口发送中断被响应后,TI不会自动清0,必须由软件清0。

⑦RI(SCON.0)——接收中断标志。

在节收到一帧有效数据后由硬件置位。

在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位。

RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。

CPU响应中断,取走数据。

RI也必须由软件清0,清除中断申请,并准备接收下一帧数据。

串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。

复位时,SCON所有位均清0。

(2)PCON(87H)
电源控制寄存器PCON中只有SMOD位与串行口工作有关,如图7-9所示。

图7-9 电源控制寄存器PCON
SMOD(PCON.7)——波特率倍增位。

在串行口方式1、方式2和方式3时,波特率和SMOD成正比,亦即当SMOD=1时,波特率提高一倍。

复位时,SMOD=0。

3、串行通信工作方式
根据实际需要,89C51串行口可设置4种工作方式,可有8位、10位或11位帧格式。

方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。

其帧格式如下:
方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。

其帧格式为:
方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。

其帧格式为:
附加第9位(D8)由软件置1或清0。

发送时在TB8中,接收时送RB8中。

(1)串行口方式0
方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。

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

这种方式不适用于两个89C51之间的直接数据通信,但可以通过外接移位寄存器来实现单片机的接口扩展。

图7-10 方式0发送电路及时序
图7-11 方式0接收电路及时序
例如,74LS164可用于扩展并行输出口,74LS165可用于扩展输入口。

在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的。

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

方式0发送
时序如图7-10(b)所示。

写SBUF指令在S6P1处产生一个正脉冲,在下一个机器周期的S6P2处数据的最低位输出到RXD(P3.0)脚上;再在下一个机器周期的S3,S4,S5输出移位时钟为低电平,而在S6级下一个机器周期的S1,S2为高电平,就这样讲8位数据由低位至高位一位一位顺序通过RXD线输出,并在TXD脚上输出fosc/12的移位时钟,在“写SBUF”有效后的第10个机器周期的S1P1将发送中断标志TI置位。

图中,74LS164是TTL“串入并出”移位寄存器。

接收时,用软件置REN=1(同时,RI=0),即开始接收。

接收时序如图7-11(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被置位。

这一帧数据接收完毕,可进行下一帧接收。

图7-11(b)中,74LS165是TTL“并入串出”移位寄存器,QH端为74LS165的串行输出端,经P3.0输入至89C51。

(2)串行口方式1
方式1真正用于串行发送或接收,为10位通用异步接口。

TXD与RXD分别用于发送与接收数据。

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

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

串行口方式1的发送和接收时序如图7-12(a)和(b)所示
图7-12 方式1发送和接收时序
方式1发送时,数据从引脚TXD(P3.1)端输出。

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

发送时的定时信号,也就是发送移位时钟(TX时钟),是由定时器T1(见图7-7)送来的溢出信号经过16分频或32分频(取决于SMOD的值)而得到的,TX 时钟就是发送波特率。

可见,方式1的波特率是可变的。

发送开始的同时,SEND变为有效,将起始位向TXD输出;此后每经过一个TX时钟周期(16分频计数器溢出一次为一个时钟周期,因此,TX时钟频率由波特率决定。

)产生一个移位脉冲,并由TXD输出一个数据位;8位数据位全部发送完后,置为位TI,并申请中断置TXD为1作为停止位,再经一个时钟周期,SEND失效。

方式1接收时,数据从引脚RXD(P3.0)端输入。

接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RXD上检测到1→0的跳变,即起始位)而开始的。

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

为了接受准确无误,在正式接受数据之前,还必须判定这个1→0跳变是否是干扰引起的。

为此,在这位中间(即一位时间分成16等份,在第7,第8及第9等份)连续对RXD采样三次,取其中两次相同的值进行判断。

这样能较好地消除干扰的影响。

当确认是真正的起始位(0)后,就开始接受一帧数据。

当一帧数据接受完毕后,必须同时满足以下两个条件,这次接受才真正有效。

①RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走。

由软件使RI=0,以便提供“接收SBUF已空”的信息。

②SM2=0或收到的停止位为1(方式1时,停止位进入RB8),则将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI;如果不满足,接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。

值得注意的是,在整个接收过程中,保证REN=1是一个先决条件。

只有当REN=1时,才能对RXD进行检测。

(3)串行口方式2和方式3
串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,所不同的只是波特率)。

每帧11位,即1位起始位,8位数据位(低位在前),1位可编程的第9数据位和1位停止位。

发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8,从而进行奇偶校验;接收时,第9数据位进入SCON的RB8。

方式2和方式3的发送、接收时序如图7-13所示。

其操作与方式1类似。

图7-13 方式2、方式3发送和接收时序
发送前,先根据通信协议由软件设置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。

4、波特率设计
在串行通信中,收发双方对发送或接收的数据速率有一定的约定,通过软件对89C51串行口编程可约定四种工作方式。

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

串行口的四种工作方式对应着三种波特率。

由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同。

(1)方式0的波特率
由图7-14可见,方式0时,发送或接收一位数据的移位时钟脉冲由S6(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。

因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。

图7-14 串行口方式0波特率的产生
方式0波特率≌ fosc / 12
注意,符号“≌”表示左面的表达式只是引拥右面表达式的数值,即右面的表达式是提供了一种计算的方法。

(2)方式2的波特率
串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分入图7-15所示。

图7-15 串行口方式2波特率的产生
控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:
SMOD=0时,波特率为fosc的1/64;
SMOD=1时,波特率为fosc的1/32。

即方式2波特率≌2SMOD/64×fosc
(3)方式1和方式3的波特率
方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,如图7-16所示。

因此,89C51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时决定。

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

相关文档
最新文档