ACHL计算机的串行通信_第1页
ACHL计算机的串行通信_第2页
ACHL计算机的串行通信_第3页
ACHL计算机的串行通信_第4页
ACHL计算机的串行通信_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第6章串行通信

本章要点

*异步通信和同步通信

心串行通信波特率

*串行通信的制式

*串行通信的校验

立串行口特殊功能寄存器

立串行工作方式

计算机与外界信息交换称为通信。

通信的基本方式可分为并行通信和串行通信

并行通信是数据的各位同时发送或同时接收

串行通信是数据的各位依次逐位发送或接收。

并行通信优点:传送速度快

缺点:不便长距离传送

串行通信优点:便于长距离传送

缺点:传送速度较慢

串行通信的基本特征是数据逐位顺序进行传送

串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平..•…等)不同,

形成了多种串行通信的协议与接口标准。

常见的有:

生通用异步收发器(UART)—本课程介绍的串口

寸通用串行总线(USB)

aPC总线

bCAN总线

bSPI总线

bRS-485,RS-232C,RS422A标准......等等

传递方向数据位

DO〜D7位

L异步通信

异步通信依靠起始位、停止位保持通信同步。

异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。

异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接

收,但因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较

低,在单片机中主要采用异步通信方式。

2、同步通信

同步通信依靠同步字符保持通信同步。

同步通信是由1~2个同步字符和多字节数据位组成,同步字符作为起始位以触

发同步时钟开始发送蜀妾收数据;多字节数据之间不允许有空隙,每位占用的时间相

等;空闲位需发送同步字符。

同步字符1同步字符2数据1

传递方向

二串行通信波特率

波特率bps(bitpersecond)定义:

每秒传输数据的位数,即:

1波特=1位/秒(1bps)

波特率的倒数即为每位传输所需的时间。

相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。

三、串行通信的制式

串行通信按照数据传送方向可分为三种制式:

单工制式

1、单工制式(Simplex)

单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。

2、半双工制式(HalfDuplex)

半双工制式

半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同

时接收和发送,发送时不能接收,接收时不能发送。

3、全双工制式(FullDuplex)

全双工制式

全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和

接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收

时也能发送。

单日上旺!虱^S曰4■匕4、辛士、QUL4、*UQ〃/*;7AHe〃r7/4*c7TH*kQ,++=+gj-

1循环冗余码校验的基本原理是将一个数据块看成一个位数很长的二进制数,然后用一个特定的

.数去除它,将余数作校验码附在数据块后一起发送。接收端收到该数据块和校验码后,进行同

1样的运算来校验传送是否出错。目前CRC已广泛用于数据存储和数据通信中,并在国际上形成

M规范,已有不少现成的CRC软件算法。

L奇偶校验

2、累加和校验

3、循环冗余码校验

(CyclicRedundancyCheck,简称CRC)

§6-280c51串行口

80c51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以

实现串行异步通信,还可以作为同步移位寄存器使用。

51单片机的串行接口

弓脚

SBUF(发)

(门)移位寄存器

TxD

C

P

U

弓脚

SBUF(收)

移位寄存器

RxD

去申请中断

-串行口特殊功能寄存器

1、串行数据缓冲器SBUF

在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,

用同一寄存器名SBUF。

在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。

发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送;

接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。

指令MOVSBUF,A启动一次数据发送,可向SBUF

再发送下一个数

指令MOVA,SBUF完成一次数据接收,SBUF可再

接收下一个数

2、串行控制寄存器SCON

SCOND7D6D5D4D3D2D1DO

位名称SMOSM1SM2RENTB8RB8TIRI

位地址9FH9EH9DH9CH9BH9AH99H98H

接收

工作方式多机通信发送接收发送接收

功能许

控制第9位第9位中断中断

⑦SMOSM1——串行口工作方式选择位。

②SM2——多机通信控制位。

③REN——允许接收控制位。REN=1,允许接收。

④TB8——方式2和方式3中要发送的第9位数据。

⑤RB8——方式2和方式3中要接收的第9位数据。

⑥77——发送中断标志。

⑦RI——接收中断标志。

①SM0SM1——串行口工作方式选择位。其状态组合所对应的工作方式如表6-2所示。

SMOSM1工作月式功能说明

000同步移位寄存器输入/输出,波特率固定为fosc/12

0118位UART;波特率可变(TI溢出率/n,n=32或16)

1029位UART,波特率固定为fosc/n,(n=64或32)

1139位UART,波特率可变(T1溢出率/n,n=32或16)

②多机通信控制位。在㈤2和时3中,若SM2=1,且RB8(接收到的第9位数据)=1时,

将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的8位数据丢弃。而当

SM2=0时,则不论第9位数据为。还是为:L,都将前8位数据装入SBUF中,并产生中断请求。

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

③REN―――允许接收控制位。REN位用于对串行数据的接收进行控制:REN=O,禁止接收;

REN=1,允许接收。该位由软件置位或复位。

④TB8———方式2和方式3中要发送的第9位数据。在方式2和方式3时,TB8是发送的第9位数据。在

多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8:0表示数据,TB8=1表示地址。

该位由软件置位或复位。

TB8还可用于奇偶校验位。

⑤RB8---方式2和方式3中要接收的第9位数据。在方式2或方式3时,RB8存放接收到的第9位数据。

⑥发送中断标志。当方式。时,发送完第8位娄好居后,该位由硬件置位。在其他方式下,

遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可软件查询TI位标志,也可

以请求中断。TI位必须由软件清0。

⑦接收中断标志。当方式0时,接收完第8位数据后,该位由硬件置位。在其他方式下,

当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束,可软件查询RI位标志,也

可以请求中断。RI位也必须由软件清0。

接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对RI/TI清0,

以备下一次收/发。

3、电源控制寄存器PCON

PCOND7D6D5D4D3D2D1DO

位名称SMOD———GF1GF0PDIDL

SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。

寸SMOD:在串行口工作方式1、2、3中,是波特率加倍位

=1时,波特率加倍

=0时,波特率不加倍。

(在PCON中只有这一个位与串口有关)

二、串行工作方式

80c51串行通信共有4种工作方式,由串行控制寄存器SCON中SMOSM1决定。

1、串行工作方式0(同步移位寄存器工作方式)

以RXD(P3.0)端作为数据移位的输入/输出端,

以TXD(P3.1)端输出移位脉冲。

移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在

其帧格式为:

DOD1D2D3D4D5D6D7

方式。可将串行输入输出数据转换成并行输入输出数据。

串行口作为并行输出口使用时,要有"串入并出"的移位寄存器配合。(例如CD4094或

74HCI64)

并行输出

串行口扩展为并行口输出口

在移位时钟脉冲(TXD)的控制下,数据从串行口RXD端逐位移入74HC1645ASB

端。当8位数据全部移出后,SCON寄存器的TI位被自动置L其后74HC164的内容即可并

行输出。74HC164CLR为清0端,输出时CLR必须为1,否则74HC164QO~Q7输出为0。

串行口作为并行输入口使用时,要有"并入串出"的移位寄存器配合。(例如CD4014或

74HC165)

并行输入

串行口扩展为并行口输入口

74HC165S/L端为移位/置入端吊S/L=O时,从QO~Q7并行置入数据,当S/L=l时,

允许从QH端移出数据。在80c51串行控制寄存器SCON中的REN=1时,TXD端发出移位

时钟脉冲,从RXD端串行输入8位数据。当接收到第8位翔居D7后,置位中断标志RI,表示

⑶波特率:方式0波特率固定,为单片机晶振频率的十二分之一。即一个机器周期进行一次移

位。

⑷应用举例

【例6-1】电路如图所示,试编制程序按下列顺序要求每隔0.5秒循环操作。

①8个发光二极管全部点亮;

②从左向右依次暗灭,每次减少一个,直至全灭;

③从左向右依次点灵,

每次亮一个;

④从右向左依次点亮,每次亮

一个;

⑤从左向右依次点亮,每次增

加一个,直至全部点亮;

⑥返回从②不断循环。

解:编程如下:

LIGHT:MOVSCON,#OOH;串行口方式0

CLRES;禁止串行中断P121

MOVDPTR,#TAB;置发光二极管亮暗控制字表首址

LP1:MOVR7,#0;置顺序编号0

LP2:MOVAfR7;读顺序编号

MOVC4@A+DPTR;读控制字

CLRP1.0;关闭并行输出,STR=O时,关闭并行输出;

MOVSBUFfA;启动串行发送

JNBTIf$;等待发送完毕

CLRTI;清发送中断标志

SETBP1.0;开启并行输出,STR=1时,开启并行输出;

LCALLDLY500ms;调用延时0.5秒子程序(参阅例4-13)

INCR7指向下一控制字

CJNER7,#30,LP2;判循环操作完否?未完继续

SJMPLP1;顺序编号0〜29依次操作完毕,从0开始重新循环

TAB:DB0FFH,7FH,3FH,lFHQFH,07H,03H,0:LH,00H;从左向右依次暗灭,

每次减少一个,直至全灭;

DB801~1,40u201~1,10H08匕0削02匕01匕从左向右依次点亮每次亮一^

DB02H,04HQ8H,10H,20H,40H,80H;从右向左依次点亮每次亮f

DBOCOHfOEOH,OFOH,0F8H,OFCH,OFEH;从左向右依次点亮,

每次增加一个,直至全部点亮;

【例】电路如图所示,试编制程序

输入KI~K8状态数据,并存入

内RAM40H。

解:编程如下:

KIN:MOVSCON,#OOH;串行卬过0

CLRES漂止串行中断

CLRP1.0;锁存并行输入数据

SETSP1.0;允许串行移位操作

SETBREN;允许并启动接收(TXD发送移位脉冲)

JNBRI,$;等待接收完毕

MOV40H5BUF;存入KI~K8状态数据

RET

2、串行工作方式1

方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位。

其帧格式为:

起始DODID2D3D4D5D6D7停止

(1)数据发送

发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧

格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕,将SCON中的TI置:L。

⑵数据接收

接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定为已接收到起始位。随

后在移位脉冲的控制下,将串行接收数据移入SBUF中。一帧数据接收完毕,将SCON中的RI置1,

表示可以从SBUF取走接收到的T字符。

2SM0D

波特率二fosc______

(3如皮特率3212(256—T1初值)

方式1波特率可变,由定时/计数器"的计数溢出率来决定。

波特率=2SM0DX(T1溢出率)/32

其中SMOD为PCON寄存器中最高位的值,SMOD=1表示波特率倍增。

在实际应用时,通常是先确定波特率,后根据波特率求T1定时初值,因此上式又可

写为:

2SM83sc

初值=

T1256-每12x波特率

当定时/计数器T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2(注意:不

要把定时/计数器的工作方式与串行口的工作方式搞混淆了)。其计数结构为8位,假定计数初

值为COUNT,单片机的机器周期为T,则定时时间为(256-COUNT)*T0从而在1s内发生

溢出的次数(即溢出率)为:

1

(256-COUNT)*T

波特率二.MOD/32)T1的溢出率

波特率=(2SMOD/32)T1的溢出率

寸溢出率:T1溢出的频繁程度

即:T1溢出一次所需时间的倒数。

2sM°Dfosc

k波特率二3212(2n-X)

其中:X是定时器初值

2SMODfosc

n

方初值X=2沙波特率_IZ

⑷应用举例

【例6-3】设甲乙机以串行方式1进行数据传送,fosc=U.0592MHz,波特率为1200b/s0甲机

发送的16个数据存在内RAM40H~4FH单元中,乙机接收后存在内RAM50H为首地址的区域中。

解:串行方式1波特率取决于T1溢出率(设SMOD=0),计算T1定时初值:

2011059200

T1初值=256-X二铲E8也皿物

甲机发送子程序:

TXDA:MOVTMODf#20H;置T1定时器工作方式2

MOVTLL#OE8H;置丁1计数初值

MOVTH1,#OE8H;置11计数重装值

CLRET1;禁止T1中断

SETBTRI;T1启动

MOVSCON,#40H;置串行方式L禁止接收

MOVPCON,#00H置SMOD=0(SMOD不能彳源作)CLR

ES;禁止串行中断

MOVRO,#40H;置发送数据区首地址

MOVR2,#16;置发送数据长度MOV

A,@RO;读一个数据

MOVSBUFfA;发送

JNBTI,$;等待一帧数据发送完毕

TRSA:CLRTI;清发送中断标志

INCR0才旨向下一字”单兀

DJNZR2JRSA;判16个数据发完否?未完继续

RET/

乙机接收子程序:

MOVTMOD,#20H;置11定时器工作方式2

RXDB-

MOVTL1,#OE8H置T1计数初值

MOVTH1,#OE8H;置丁1计数重装值

CLRET1;禁止T1中断

SETBTRI;T1启动

MOVSCON,#40H;置串行方式L禁止接收

MOVPCON,#OOH^SMOD=0(SMOD不能位操作)

CLRES;禁止串行中断

MOVRO,#50H;置接收数据区首地址

MOVR2,#16;置接收数据长度

SETBREN;启动接收

JNBRL$;等待一帧数据接收完毕

CLRRI;清接收中断标志

MOVAfSBUF;读接收数据

MOV@RO,A;存接收数据

RDSB:INCRO^数据存

DJNZRZRDSB;判16个数据接收完否?未完继续

RET/

3、串行工作方式2

方式2是一帧11位的串行通信方式,即1个起始位,8个数据位,1个可编程位

TB8/RB8和1个停止位,其帧格式为:

|起始|DO|D1|D2|D3|D4|D5|D6|D7|TB8/RB8|停止

可编程位TB8/RB8既可作奇偶校验位用,也可作控制位(多机通信)用,其功

能由用户确定。

数据发送和接收与方式1基本相同,区别在于方式2把发送/接收到的第9位内容送入

TB8/RB8。

波特率:方式2波特率固定,即fosc/32和fosc/64。如用公式表示则为:波特率=2^。口

xfosc/64

当SMOD=0时,波特率=20xfosc/64=fosc/64

当SMOD=1时,波特率=21xfosc/64=fosc/32

【例6-4】设计一个串行方式2发送子程序(SM°D=1),将片内RAM^OH~5FH西婴

据串行发送,第9数据位作为奇偶校验位。接到接收方核夕寸正确的茴曼信号(用FFH表")

后,再发送下一字节数据,否则再重发一遍。

解:程序如下:

c开攻台)

串trn初始化

量故塘区苜地址

重敌塘长度

;IV-

C三而)

TRS2:MOVSCON,#80H;置串行方式2,禁止接收

MOVPCON,#80H;^SMOD=1

MOVRO,#50H;置发送数据区首址

TRLP:MOVA,@RO;读数据

MOVC,PSW.O;奇偶标志送TB8

MOVTB8fC/

MOVSBUF,A;启动发送

JNBn$;等待一帧数据发送完毕

CLRTI;清发送中断标志

SETBREN;允许接收

CLRRI;清接收中断标志

JNBRL$;等待接收回复信号

MOVA,SBUF;读回复信号

CPLA;回复信号取反

JNZTRLP徘全0(回复信号/FFH,错误),转重发

INCRO;全0(回复信号二FFH,正确),

指向下一数据存储单元

CJNER0,#60H,TRLP;判16个数据发送完否?未完继续

RET:

【例吁】^啰一个串行方式2接收子程序,接收上例发送的16个数据,存首址为40H的

蹩始当次核T基缗螫鬟蛆乙接收核对正确,发出回复信号FFH;热凝误,发出

回复1己亏UUH/升等彳寸重所接收。

解:程序如下:

RXD2:MOVSCON,#80H;置串行方式2,禁止接收

MOVPCONf#80H;mSMOD=l

MOVRO,#40H;置接收数据区首址

SETBREN;启动接收

RWAP:JNBRI,$;等待一帧数据接收完毕

CLRRI;清接收中断标志

MOVA,SBUF;读接收数据,并在PSW中产生接收数据的奇偶值

JBPSWQONE;P=L转另判

JBRB8,ERR;P=0,RB8二L接收有错;

;P=0,RB8:0,接收正确,继续接收

RLOP:MOV@RO,A有接收数据

INCRO

温馨提示

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

评论

0/150

提交评论