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

下载本文档

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

文档简介

串行通信章改第一页,共五十四页,编辑于2023年,星期六二、串行通信的传输方式单工:单方向半双工:发送接收分时进行全双工:发送接收同时进行第二页,共五十四页,编辑于2023年,星期六三、异步和同步通信

同步通信特点:

发送和接收时钟始终保持严格同步。由发送一方用同步字符指示每一同步数据流的开始。发送方不得间断发送数据,否则插入同步字符。起始位数据位奇偶校验位终止位异步通信特点:

数据是一帧一帧的传送。规定了字符数据的传送格式。用“起始位”“终止位”指示每一个传输数据的开始和结束。每个数据都以相同的帧格式传输。第三页,共五十四页,编辑于2023年,星期六

同步通信数据格式第四页,共五十四页,编辑于2023年,星期六

异步通信数据格式第五页,共五十四页,编辑于2023年,星期六四、通信数据的差错检测

(1)奇偶校验

在数据位后附加一个奇偶校验位,该位可为“0”或“1”,以保证整个字符(包括校验位)中“1”的个数为偶数(偶校验)或为奇数(奇校验)。接收方按约定检查数据是否正确。(2)校验和发送方对数据块简单求和,产生一个单字节校验字符(校验和)附加到数据块的结尾。接收方对收到的数据求和后与收到的校验和进行比较,不同则有误。(3)返回检验收到数据全部返回。第六页,共五十四页,编辑于2023年,星期六五、波特率

数据传送速率,用每秒传送位数表示。例:电传机最快传送速率为10字符/秒,每个字符11位,则波特率为11位/字符×10字符/秒=110位/秒六、串行通信的过程及通信协议串←→并转换与设备同步

两个通信设备在串行线路上成功地实现通信必须解决两个问题:

一是串←→并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。第七页,共五十四页,编辑于2023年,星期六发送时的并-串转换第八页,共五十四页,编辑于2023年,星期六接收时的串-并转换第九页,共五十四页,编辑于2023年,星期六

进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生相同的传送速率。串行通信协议

通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。起始位数据位奇偶校验位停止位波特率设置挂钩(握手)信号约定第十页,共五十四页,编辑于2023年,星期六串行通信接口电路功能:

CPU并行输出

CPU并行输入串行发送串行接收UniversalAsychronousReceiver/Transmitter通用异步接收器/发送器UARTUniversalSynchronousReceiver/Transmitter通用同步接收器/发送器USRT通用同步/异步·接收器/发送器USART7.2串行口及应用第十一页,共五十四页,编辑于2023年,星期六典型串行接口芯片:INS82508251MCS-51的串行通信口特点:片内一个全双工串行口四种方式编程选择波特率由软件控制、片内定时器产生接收/发送均可工作在查询或中断方式一、89C51串行口

1.结构

89C51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。第十二页,共五十四页,编辑于2023年,星期六

串行口内部结构示意简图第十三页,共五十四页,编辑于2023年,星期六2.串行口控制字及特殊功能寄存器(1)SBUF串行数据缓冲器发送缓冲器接收缓冲器同名同地址99H

串行发送与接收的速率与移位时钟同步。89C51用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。CPU发送数据SUBFTXD(P3.1)串行输出CPU接收数据SUBFRXD(P3.0)接收数据第十四页,共五十四页,编辑于2023年,星期六(2)PCON-电源控制寄存器(87H)SMODD7D6D5D4D3D2D1D0PCON波特率选择其它定义位字节地址87HSMOD=1,串口方式1,2或3,波特率提高一倍。可用MOV

PCON,#80H;或MOV

87H,#80H;使SMOD置1用于波特率选择第十五页,共五十四页,编辑于2023年,星期六(3)串口控制寄存器SCON(98H)位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRI位D7D6D5D4D3D2D1D0SCON字节地址98H串行口操作方式选择位00方式001方式110方式211方式3允许方式2、3的多机通信使能位允许串行接收位1允许接收;0禁止接收方式2、3中要发送的第9位数据,可编程方式2、3中接收到的第9位数据。发送中断标志接收中断标志第十六页,共五十四页,编辑于2023年,星期六3.串行接口工作方式串口工作方式由SM0,SM1决定,见下表:串行口方式选择SM0SM100011011方式

01

2

3

功能说明

移位寄存器方式

8位UART

9位UART

9位UART

波特率

fosc/12

可变

fosc/64或fosc/32

可变方式1、3的波特率:波特率=(2SMOD/32)×T1溢出率=第十七页,共五十四页,编辑于2023年,星期六(1)方式0-同步移位寄存器方式RxD(P3.0)串行发送或接收数据,TxD(P3.1)输出同步移位脉冲,数据传送以8位为一帧,最低有效位LSB居先,波特率为第十八页,共五十四页,编辑于2023年,星期六方式0接收电路及时序第十九页,共五十四页,编辑于2023年,星期六说明:方式0发送或接收完8位数据后由硬件置位发送中断标志TI或接收中断标志RI。CPU响应中断请求转入中断服务程序时并不清TI或RI。中断标志TI或RI要用程序来清0。具体做法:

CLR

TI

CLR

RI或ANL

SCON,#0FEH

ANL

SCON,#0FDH来实现。以方式0工作时SM2位(多机通信控制位)必须为0.第二十页,共五十四页,编辑于2023年,星期六(2)方式1-8位异步通信方式TxD(P3.1)发送数据,RxD(P3.0)接收数据,一帧信息10位D0D1D2D3D4D5D6D7起始位停止位波特率第二十一页,共五十四页,编辑于2023年,星期六方式1发送和接收时序第二十二页,共五十四页,编辑于2023年,星期六(3)方式2-9位异步通信接口D0D1D2D3D4D5D6D7D8起始位停止位TxD(P3.1)发送数据,RxD(P3.0)接收数据,一帧信息11位波特率第二十三页,共五十四页,编辑于2023年,星期六(4)方式3-9位异步通信接口TxD(P3.1)发送数据,RxD(P3.0)接收数据,一帧信息11位D0D1D2D3D4D5D6D7D8起始位停止位波特率第二十四页,共五十四页,编辑于2023年,星期六方式2、方式3发送和接收时序第二十五页,共五十四页,编辑于2023年,星期六4.串行口波特率设置 方式0:波特率=为时钟频率,由硬件决定方式2:波特率=SMOD为特殊功能寄存器PCON最高位,由软件决定.T1溢出率:T1溢出次数/每秒方式1,3:波特率=T1溢出一次所需时间(28-N)×12/foscT1溢出率=1/溢出一次所需时间=

波特率=第二十六页,共五十四页,编辑于2023年,星期六初始化步骤MOVTMOD,#20HMOVTH1,#XXH;定时器1初始化(如果波特率和定MOVTL1,#XXH;时器1有关)SETBTR1

MOVPCON,#80H;串行口初始化,根据工作方式和波MOVSCON,#50H;特率等决定SETBEA;中断开放SETBES第二十七页,共五十四页,编辑于2023年,星期六二、89C51串行口应用1.串行口方式0的应用例1:用89C51串行口外接164串入——并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法。解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现。串入并出电路第二十八页,共五十四页,编辑于2023年,星期六 ORG0023H;串行口中断入口

AJMPSBR;转入串行口中断服务程序

ORG2000H;主程序起始地址

MOVSCON,#00H ;串行口方式0初始化

MOVA,#80H ;最左一位发光二极管先亮

CLRP1.0 ;关闭并行输出

MOVSBUF,A ;开始串行输出LOOP: SJMP$ ;等待中断SBR: SETBP1.0 ;启动并行输出

ACALLDELAY ;显示延迟一段时间

CLRTI ;清发送中断标志

RRA ;准备右边一位显示

CLRP1.0 ;关闭并行输出

MOVSBUF,A ;再一次串行输出

RETI ;中断返回第二十九页,共五十四页,编辑于2023年,星期六例2:用89C51串行口外加移位寄存器165或166扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,并入串出电路第三十页,共五十四页,编辑于2023年,星期六

对RI采用查询方式来编写程序,当然,先要查询开关K是否闭合。程序清单:START: MOVSCON,#10H;串行口方式0初始化

JBP1.1,$ ;开关K未闭合,等待

SETBP1.0 ;P/S=1,并行置入数据

CLRP1.0 ;PS=0,开始串行移位

JNBRI,$ ;查询RI CLRRI ;查询结束,清RI MOVA,SBUF ;读数据到累加器

ACALLLOGSIM ;进行逻辑模拟

SJMPSTART ;准备下一次模拟2.串行口方式1的应用第三十一页,共五十四页,编辑于2023年,星期六例3:在8051片内RAM30~4FH单元中有32个字节的数据,若采用方式1进行串行通信,波特率为1200bit/s,fosc=6MHz(SMOD=0),用查询和中断两种方式编写发送/接收程序对。解:T1为方式2由:波特率=位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRISCON允许接收01010000=50H禁止接收01000000=40H第三十二页,共五十四页,编辑于2023年,星期六查询方式

发送:

ORG0000H AJMPMAIN ORG0030H MAIN: MOVTMOD,#20HMOVTL1,#0F3H MOVTH1,#0F3H SETBTR1

MOVSCON,#40HHERE:JNBTI,HERE

MOVPCON,#00H CLRTI MOVR0,#30HINCR0 MOVR7,#20HDJNZR7,LOOP LOOP: MOVA,@R0SJMP$MOVSBUF,AEND 第三十三页,共五十四页,编辑于2023年,星期六查询方式

接收:

ORG0000H AJMPMAIN ORG0030H MAIN: MOVTMOD,#20HMOVTL1,#0F3H MOVTH1,#0F3H SETBTR1

MOVSCON,#50HMOVA,SBUF

MOVPCON,#00HMOV@R0,A MOVR0,#30HINCR0 MOVR7,#20HDJNZR7,HERE HERE:JNBRI,HERESJMP$CLRRIEND 第三十四页,共五十四页,编辑于2023年,星期六中断方式

ORG0000HMOVA,@R0 AJMPMAINMOVSBUF,A

ORG0023HCLRF0

AJMP

SERWAIT:JBF0,HERE ORG0030HAJMPWAIT MAIN:MOVSP,#60HHERE:AJMPHERE

MOVTMOD,#20H

SER:CLRTI

MOVTH1,#0F3H

INCR0

MOVTL1,#0F3H

MOVA,@R0

SETBTR1

MOVSBUF,A

MOVSCON,#40H

DJNZR7,HEMOVR0,#30HSETBF0MOVR7,#31;20HCLRES

SETB

EA

HE:

RETI

SETB

ES END发送:第三十五页,共五十四页,编辑于2023年,星期六中断方式

ORG0000H AJMPMAIN

ORG0023HCLRF0

AJMP

SERWAIT:JBF0,HERE ORG0030HAJMPWAIT MAIN:MOVSP,#60HHERE:AJMPHERE

MOVTMOD,#20H

SER:CLRRI

MOVTH1,#0F3H

MOVA,SBUF

MOVTL1,#0F3H

MOV@R0,A

SETBTR1

INCR0

MOVSCON,#50H

DJNZR7,HEMOVR0,#30HSETBF0MOVR7,#20HCLRES

SETBEA

HE:

RETI

SETB

ES END接收:第三十六页,共五十四页,编辑于2023年,星期六例4:设计一个发送程序,将50H~5FH单元中的数据从串行口输出(方式2),TB8做奇偶校验位。解:波特率=2SMOD×fosc/64=21×fosc/64=fosc/32位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRISCONSCON=10000000=80HPCON=10000000=80H3.串行口方式2的应用第三十七页,共五十四页,编辑于2023年,星期六查询方式

发送:

ORG0000H AJMPMAIN ORG0030H MAIN:MOVSCON,#80HWAIT:JBCTI,CONTMOVPCON,#80H SJMPWAIT MOVR0,#50HCONT:INCR0 MOVR7,#10HDJNZR7,LOOP LOOP: MOVA,@R0SJMP$MOVC,PENDMOVTB8,CMOVSBUF,A 第三十八页,共五十四页,编辑于2023年,星期六4.串行口方式3的应用例5:编制一个接收程序,将接收的16B数据送入片内RAM的5OH—5FH单元中。设串行口工作于方式3,波特率为2400b/s。解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查表7-2(p165)可知,当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0。TH1=0F4H。第三十九页,共五十四页,编辑于2023年,星期六MAIN:MOVTMOD,#20H ;设TI工作于模式2 MOVTH1,#0F4H ;赋循环计数初值

MOVTL1,#0F4H ;赋计数值

SETBTR1 ;启动定时器TI MOVR0,#50H ;首地址送R0 MOVR7,#10H ;数据长度送R7 MOVSCON,#0D0H ;串行口工作与方式3,可接收

MOVPCON,#00H ;设SMOD=0WAIT:JBCRI,PR1;接收完一帧数据,清RI,转PR1 SJMPWAIT ;否则等待PR1: MOVA,SBUF ;读入数据

第四十页,共五十四页,编辑于2023年,星期六 JNBP,PNP ;P=0,转PNP JNBRB8,PER ;P=1,RB8=0,转出错处理

SJMPRIGHTPNP:JBRB8,PER ;P=0,RB8=1,转出错处理RIGHT:MOV@R0,A ;数据送内存

INCR0 ;修改地址指针

DJNZR7,WAIT;未完,继续接收下一个数据

CLRPSW.5 ;置正确接收完毕标志F0=0RETPER:SETBPSW.5RET第四十一页,共五十四页,编辑于2023年,星期六

例6:甲机向乙机发送128个字节的数据。乙机收到后做校验,正确则存储数据并回送“00”给甲机;不正确则回送“FF”给甲机,甲机将重新发送,直至全部发送完毕。7.389C51与89C51点对点异步通信第四十二页,共五十四页,编辑于2023年,星期六

甲机软件流程图第四十三页,共五十四页,编辑于2023年,星期六乙机第四十四页,共五十四页,编辑于2023年,星期六参数确定a.晶振6MHz,串口工作方式39位UART,每帧数据11位(1位起始、8位数据、1位奇偶校验、1位停止)b.波特率2400定时初值取SMOD=1得c.

发送数据存于外部数据存储器4000H~407FH单元接收的数据存于外部数据存储器4000H开始的单元第四十五页,共五十四页,编辑于2023年,星期六甲机程序清单ORG0000HLJMPMAINORG0023HLJMPSERVE1ORG0100HMAIN:MOVTMOD,#20HMOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVPCON,#80HMOVSCON,#0D0HMOVDPTR,#4000HMOVR0,#80HSETBESSETBEA第四十六页,共五十四页,编辑于2023年,星期六MOVXA,@DPTRMOVC,PMOVTB8,CMOVSUBF,AHERE:SJMPHERESERVE1:JBCRI,LOOPCLRTISJMPENDTLOOP:MOVA,SBUFCLRCSUBBA,#01HJCLOOP1MOVXA,@DPTRMOVC,PMOVTB8,CMOVSUBF,ASJMPENDT第四十七页,共五十四页,编辑于2023年,星期六LOOP1:INCDPTRMOVXA,@DPTRMOVC,P;

MOVTB8,C;

MOVSUBF,ADJNZR0,ENDTCLRESENDT:RETI乙机程序清单

ORG0000H LJMPMAIN ORG0023H LJMPSERVE2 ORG0100HMAIN:MOVTMOD,#20H第四十八页,共五十四页,编辑于2023年,星期六MOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVPCON,#80HMOVSCON,#0D0HMOVDPTR,#4000HMOVR0,#80HSETBESSETBEAHERE:SJMPHERESERVE2:JBCRI,LOOPCLRTISJMP

温馨提示

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

评论

0/150

提交评论