单片机的异步串行通信技术_第1页
单片机的异步串行通信技术_第2页
单片机的异步串行通信技术_第3页
单片机的异步串行通信技术_第4页
单片机的异步串行通信技术_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第八章8051单片机的异步串行通信技术

第一节概述

计算机与外界的信息互换称为通信。常用通信方式有两种:弁行通信与串行通信,简称并

行传送和串行传送。并行传送具有传送速度快,效率高等优点,但传送多少数据位就需要多少

根数据线,传送成木高;串行传送是我位顺序进行数据传送,最少仅需要一根传输线即可完毕,

传送距离远,但传送速度慢。串行通信又分同步和异步两种方式。同步通信中,在数据传送开

始时先用同步字符来指示(常约定1―2个),并由同时传送的时钟信号来实现发送端和接受端

同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送方式对硬件结构规

定较高。在单片机异步通信中,数据分为一帧一帧地传送,即异步串行通信一次传送一个完整

字符,字符格式如图8—1所示:

图8-1异步串行通信的字符格式

一个字符应涉及以下信息:

1.起始位:相应逻辑0(space)状态。发送器通过发送起始位开始一帧字符的传送。

2.数据位:起始位之后传送数据位。数据位中低位在前,高位在后。数据位可以是5.6.7、

8位。

3.奇偶校验位:奇偶校验位事实上是传送的附加位,若该位用于用于奇偶校验,可校检串行

传送的对的性。奇偶校验位的设立与否及校验方式(奇校验还是偶校验)由用户需要拟定。

4.停止位:用逻辑1(mark)表达。停止位标志一个字符传送的结束。停止位可以是1、1.E

或2位。

串行通信中用每秒传送二进制数据位的数量表达传送速率,称为波特率。

I波特=山"(位/秒)

例如数据传送速率是240帧/秒,每帧由一位起始位、八位数据位和一位停止位组成,则传送

速率为:

10X240=2400位/秒=2400波特

单片机的串行通信重要采用异步通信传送方式。在串行通信中,按不

同的通信方向有单工传送和双工传送之分,如图8-2所示:

(a)单工传送

(b)双工传送

(c)全双工传送

图8-2单片机串行通信方向示意

图8—2(a)中,甲.乙两机只能单方向发送或接受数据;

图8—2(b)中,甲机和乙机能分时进行双向发送和接受数据;

图8—2(c)中,甲,乙两机能同时双向发送和接受数据。

第二节8051串行口的基本结构

MCS—51系列单片机串行口结构框图如图8—3所示:

位符号功能说明

SMO,SMISMO,SMI——串行口工作方式选择位:

SMOSM1工作方式功能

0008位数码传送,波特率固定,为f晶振/12。

01110位数码传送,波特率可变。

10211位数码传送,波特率固定,为f晶振/64或f

晶振/32。

11311位数码传送,波特率可变。

11311位数码传送,波特率可变。

SM2SM2——多机通信控制位:

当串行口以方式2或方式3接受时,如SM2=1,则只有当接受到的第

九位数据(RB8)为1,才将接受到的前8位数据送入接受SBUF,并使RI

位置1,产生中断请求信号;否则将接受到的前8位数据丢弃。而当SM2

=0时,则不管第九位数据为0还是为1,都将前8位数据装入接受SBUF

中,并产生中断请求信号。对方式0,SM2必须为0,对方式1,当SM2=1,

只有接受到有效停止位后才使RT位置1。

当串行口以方式2或方式3接受时,如SM2=1,则只有当接受到的第

九位数据(RB8)为1,才将接受到的前8位数据送入接受SBUF,并使RI

位置1,产生中断请求信号;否则将接受到的前8位数据丢弃。而当SM2

=0时,则不管第九位数据为0还是为1,都将前8位数据装入接受SBUF

中,并产生中断请求信号。对方式0,SM2必须为0,对方式1,当SM2=1,

只有接受到有效停止位后才使RI位置1。

RENREN—允许接受位,用于对串行数据的接受进行控制:

REN=O,严禁接受;REN=1,允许接受。该位由软件置1或清零。

REN=O,严禁接受;REN=1,允许接受。该位由软件置1或清零。

TB8TB8——发送数据位8:

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

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

RB8RB8一一接受数据位8:

在方式2和方式3中,RB8位存放接受到的第9位数据

在方式2和方式3中,RB8位存放接受到的第9位数据

TTTT------发送中断标志:

当方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于

发送停止位之前由硬件置位。因此TI=1,表达帧发送结束。其状态既可

供软件查询使用,也可请求中断。TI位由软件清0。

RIRI接受中断标志:

当方式。时,接受完第8位数据后,该位由硬件置1。在其它方式下,当

接受到停止位时,该位由硬件置位。因此RI=L表达帧接受结束。其状

态既可供软件查询使用,也可以请求中断。RI位由软件清0。

此外,电源控制寄存器PCON中SMOD位可影响串行口的波特至。

当(SMOD)=1,串行口波特率加倍。

尚有中断允许寄存器IE中的ES位可选择串行口中断允许或严禁。

ES=O,严禁串行口中断

ES=1,允许串行口中断

第三节8051串行通信工作方式及应用

1.8051单片机的串行通信共有四种工作方式:

2.串行工作方式0

申行口为同步移位寄存器方式,波特率固定为f晶振/12。该方式重要用丁T/O口扩展等,方式

0传送数据时,串行数据由RXD(P3.0)端输入或输出,而TXD(P3.1)此时仅作为同步移位脉冲发

生器发出移位脉冲。

串行数据的发送和接受以8位为一帧,不设起始位和停止位,其格式如卜:

DOD1D2D3D4D5D6D7

方式0输出数据时,向SBUF写入数据的指令:

MOVSBUF,A

或:

MOVSBUF,XXH

即为从RXD端输出数据的发送启动指令。当8位数据所有移出后,SCON中的TI位被

自动置1。

方式0输入数据时,使SCON中REN位置1指令:

SETBREN

即为从RXD端输入数据启动指令。当接受到8位数据后SCON中的RI位被自动置1。

方式0工作时往往需要外部有串入并出寄存器(输出)和并入串出寄存器(输入)配合使用,方

式0多用于将串行口转变为并行口的使用场合,如图8-4所示:

并行输出并行输入

移位脉冲移位原冲

P1.0P1.0

(a)(b)

图8—4串行工作方式0与输入,输出电路的连接示例

图8—4(a)中CD4094是“串入并出“移位寄存器,TXC端输出频率为F晶振/12的

固定方波信号(移位脉冲),在该移位脉冲的作用下,D端串行输入数据可依次存入CD4094内

部8D锁存器锁存。P1.0为选通信号,当P1.0二STB为高电平时,将内部8D锁存器数据并行输

出。图8—4(b)中CD4014为“串入/并出一串出“移位寄存器,P1—P8为并行输入端,Q8为

串行输出端,当P1.0二P/S=1,加在并行输入端Pl—P8上的数据在时钟脉冲作用下从Q8端串行

输出。

方式0的移位操作的波特率固定为单片机晶振频率f晶振的十一半。

即:

波特率=f品振/12。

例如当f晶振=12MHZ,波特率=106(位/秒)。

例8—1试编写从CD4094并行输出数据3611的参考程序:

解:参考程序如下:

MOVSCON,ttOOH;串行口工作方式0。

CLRES;严禁串行口中断。

MOVA,#36H;传送数据送Ao

CLRPl.0:关闭并行输出。

MOVSBUF,A;启动串行输出。

HERE:JBCTI,FS;等待串行输出完毕。

AJMPHERE

FS:SETBP1.0;启动并行输出。

RET;返回。

(1)2.串行工作方式1

(2)方式1传送的数据格式

方式1传送一帧为10位的串行数据,涉及1位起始位,8位数据位和1位停止位。其帧格式为:

起LI—1—1—1

始DODID2D3D41D5DJ停

(2)方式1的波特率的拟定

方式1的波特率是可变的,计算公式为:

波特率=(2-*732)X(T1溢出率)

其中smod为PCON寄存器最高位的值。

所谓定期器T1的溢出就是T1在单位时间内溢出的次数。如设T1为工作方式2,那么T1定期

时间:

T1定期=(2—X)XT机=(2—X)X12/F晶振

则T1的溢出率:1/T1定期:F晶振/(12(2*一X))

由此可得波特率的计算公式为:

波特率=(2^/32)XF晶振/(12(2-X))

实际使用时总是先拟定波特率,再计算定期器T1的记数初值X,然后进行T1的初始化。根据

上述波特率的计算公式,可得T1记数初值的计算公式为:

X=256-(F晶振X2E)/(384X波特率)

定期器T1之所以选择工作方式2,是由于方式2具有自动加载功能,可避免通过程序反复装

入计数初值而影响波特率的准确性。

(3)方式1数据的发送和接受

方式1的数据发送由一条写入单片机发送寄存器SBUF指令启动。8位数据在串行口由

硬件自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲作用下,由TXD端串行输出。

发送完一帧数据后,使TXD输出端维持“1"状态并置使TI标志位置1以告知CPU发送下一个

字符。

接受数据由接受单片机SCON中的REN置1开始,随后串行口不断采样RXD端电平,当

采样到RXD端电平从1向0跳变时:就认定是接受信号并开始接受从RXD端输入的数据,

并送入内部接受寄存器SBUF中,直到停止位到来之后,并使“位置1,告知CPU从SBUF

中取走接受到的一帧字符。

方式1传送数据时发送前应先清口,接受前应先清RI。

例8—2甲,乙两单片机拟以_L作方式1进行串行数据通信,波特率为12UU,甲

机发送,发送数据在甲机外部RAM1OOOH—1O1FH单元中。乙机接受,并把接受数据依

次放入乙机外部RAM1OOOH—1O1FH单元中。甲,乙机晶振频率均为6MHZ。

连接方式如图8—5所示:

TXDRXD

图8-5例8-2示意图

解:设定:

(1)甲、乙机定期用工作方式2,即初值

6义Wx1

X=256---------------=243=F3H

(2)SMOD=O,即波特率不倍增。

(3)用查询传送方式。

(4)SCON=01000000B=40H

可得甲机发送主程序如卜.:

ORG0030H

MOVTMOD,#20H;设定期器1工作方式2。

MOVTL1,#0F3H:设立定期器初值。

MOVTH1,#0F3H:设立重装值。

CLREA;严禁中断。

MOVPCON,#00H;(SMOD)=Oo

MOVSCON,#40H;设串行工作方式1,严禁接受。

MOVDPTR,#100011;建立发送数据地址指计初值。

MOVR7,#20H:建立计数指针。

SETBTRI;启动定期器1。

SEND:MOVXA,@DPTR;取数据。

MOVSBUF,A:启动数据传送操作。

JNBTI,.s;等待一帧发送完毕。

CLRTI;清TI标志。

TNCDPTR;指向下一单元。

DJNZR7,SEND;数据块传送结束?没结束继续传送

CLRTRI;传送结束,停止定期器1工作

RET;返回。

乙机接受参考程序如下:

ORG0030H

MOVTMOD,#20H;设定期器1工作方式2。

VOVTL1,#0F3H;设立定期器初值。

MOVTH1,#0F3H;设立重装值。

CLREA;严禁中断。

UOVPCON,#00H;SMOD=Oo

MOVSCON,#40H;设串行工作方式1。

MOVDPTR,#1000H:建立接受地址指针初值。

MOVR7,#2011;建立计数指针。

SETBTRI;启动定期器T1。

SETBREN;启动接受数据操作。

RECIV:JXBRI,$;等待数据接受完毕。

CLKRI;清K1标志。

MOVA,SBUF;取数据。

MOVX@DPTR,A;送外部RAM。

INCDPTR;指向下一单元。

DJXZR7,RECIV;数据块接受完毕?没完继续接受。

CLRTRI;接受完毕,停止定期器1工作。

RET;返回。

如改用中断方式甲机发送参考程序如下:

ORG000011

AJMPMAIN

0RG0023H

LJMPASEND;建立串行中断口地址。

ORG003011

MAIN:MOVSP,#30H;设立堆栈。

MOVTMOD,#2011;设定期器1工作方式2。

UOVTL1,#0F3H;设立定期器初值。

MOVTH1,#0F3H;设立重装值。

MOVPCON,#00H;SMOD=Oo

UOVSCON,#40H;设串行工作方式1。

MOVR7,#1FH;建立计数指针。

MOVDPTR,#1000H;建立发送地址指针初值。

SETBEA;总中断允许。

SETBES:串行中断允许。

SETBTRO;启动定期器0。

MOVXA,如PTR;第一个数据送A。

MOVSBUF,A;启动传送数据操作。

INCDPTR;指向下一RAM单元。

WAIT:AJMP$;等待中断。

中断服务子程序:

ORG01OOH

CLRTI:清口。

ASEND:MOVXA,@DPTR;取数据。

MOVSBUF,A:传送数据

INCDPTR;指向下一单元。

DJNZR7,GOON;传送结束?没结束继续传送。

CLREA;传送结束,关闭。

CLRTRI

GOON:RETI;返回。

顺便指出,甲机以中断方式传送数据时,计数指示为1FH而非20H,这是由于在启动甲机

发送时已经向SBUF发送了一个数据。

至于乙机,既可用上述查询方式接受,也可用中断方式接受。中断方式程序设计思绪与查

询方式类似,不再细述。

在异步串行通讯中,接受机以波特率的3倍检测RXD端信号,检测到两次以上相同信号即

为有效信号。

在实际应用中,可根据需要加入奇偶校验位一起传送,以提高传送的可靠性。

例8—3甲,乙两单片机同样以,作方式1进行串行数据通信,波特率为1200,甲

机发送,发送数据在甲机外部RAM1000H—101FH单元中,在发送之前先将数据块长度

发送给乙机,发送完后,向乙机发送一个累加校验和。乙机接受,乙机一方面接受数

据长度,然后接受数据,并把接受数据依次放入乙机外部RAMlOOOH-lOlFH单元中,接

受完毕后进行一次累加和校验,数据所有接受完毕时向甲机送出状态字,表达传送状

态。甲、乙机晶振频率均为6MHZ。

连接方式见图8-6:

甲乙

图8-6例8—3示意图

解:设定如下:

=0,僦痔燕物善招用为I2。。,以定期器T1为波特率发生器,T1用工作方式2(SMOD)

则初值:6X106X1

X=256—=243=F3H

(2)设立R5为累加和寄存器,R6为数据块长度寄存器。

(3)用查询传送方式。

(4)串行口为工作方式1,允许接受,即;

SC0N=01010000B=5CH

可得甲机发送主程序如卜.:

ORG0030H

MOVTMOD.#20H:设定期器IT作方式2c

MOVTL1,#0F3H;设立定期器初值。

MOVTill,#0F3H;设立重装值。

SETBTRI;启动定期器lo

MOVPCON,#00H;(SMOD)=0o

MOVSCON,#50H;设串行工作方式1,允许接受。

AGAIN:MOVDPTR,#1000H;建立发送数据地址指针初值。

MOVR6,#2011;数据块长度送R6。

MOVR5,#00H;累加和寄存器清“0”。

MOVSBUF,R6;先发送长度值。

LI:JBCTI,L2;等待发送结束。

AJMPLI

L2:MOVXA,©DPTR;取数据块中数据。

MOVSBUF,A;发送数据。

ADDA,R5:发送数据累加。

MOVR5,A;累加和送R5。

INCDPTR;地址加1。

L3:JBCTI,L4;等待一帧数据发送完毕。

AJMPL3

L4:DJNZR6,L2;判断数据块是否发送完,若未完继续发送。

MOVSBUF,R5;数据块发送完毕,发累加和校验码。

L5:JBCTl,L6;等待发送累加和码结束。

AJMPL5

L6:JBCRI,L7;接受从机发来的结果标志码。

AJMPL6

17:^fOVA,SBUF

JZL8;若标志码为00H,表达接受对的,返回;反

之重发。

AJMPAGAIN;发送有错,重发。

L8:RET

乙机接受参考程序如卜.:

ORG0030H

MOVTMOD,#20H:设定期器1工作方式2。

MOVTL1,#0F3H;设立定期器初值。

MOVTHO,80F3H;设立重装值。

SETBTRI;启动门。

MOVPCON,#00H;SMOD二0。

MOVSCON,#50H:设串行工作方式1,允许接受。

AGAIN:MOVDPTR,#100011;建立接受地址指针初值

L0:JBCRI,L1;接受发送长度值。

AJMPL0

LI:MOVA,SBUF

MOVK6,A;取发送长度值送R6。

MOVR5,#0011;累加和寄存器清"0"。

WAIT:JBCRI,L2;接受数据。

AJMPWAIT

L2:MOVA,SBUF

MOVX@DPTR,A:将所接受数据送数据区。

INCDPTR;指向下一单元。

ADDA,R5;累加。

MOVR5,A

DJNZR6,WAIT;若数据接受未完继续。

L3:JBCRI,L4:数据接受完毕,接受主机的累加校验码。

AJMPL3

L4:MOVA,SBUF;取主机累加和校验码。

XRLA,R5;与本机累加和进行校验。

JZL7;若校验对的转L7。

MOVSBUF,#OPFII;校验犯错,回送校验犯错标志码ITH,表达规定

主机重发。

L5:JBCTI,L6;回送FFH。

AJMPL5

L6:AJMPAGAIN;重新接受

L7:MOVSBUF,#OOH;回送校验对的标志码OOH。

L8:JBCTI,L9;回送。

AJMPL8

L9:KET;接受完毕,返回。

3.串行工作方式2

方式2是11位为一帧的串行通信方式,即1位始位,9位数据位和1位停止位。

其中第9位数据既可作奇偶校验位,也可作控制位使用。其帧格式为:

—始「啊一D4—产一产一—甲D8|垮——

——————

温馨提示

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

评论

0/150

提交评论