串行接口及其串行通信课件_第1页
串行接口及其串行通信课件_第2页
串行接口及其串行通信课件_第3页
串行接口及其串行通信课件_第4页
串行接口及其串行通信课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、串行接口及其串行通信1 MCS-51MCS-51单片机的串行接口及其串行通信单片机的串行接口及其串行通信5.4.1 5.4.1 串行数据通信基础串行数据通信基础5.4.2 MCS-515.4.2 MCS-51串行口及控制寄存器串行口及控制寄存器5.4.3 MCS-515.4.3 MCS-51串行通信工作方式及应用串行通信工作方式及应用:6, 9:6, 9,1010,1515* *串行接口及其串行通信25.4.1 串行数据通信基础一、数据通信的概念一、数据通信的概念计算机与计算机或外部设备之间的数据传计算机与计算机或外部设备之间的数据传送送数据通信数据通信 并行并行数据通信数据通信 同步同步 串

2、行串行 异步异步串行接口及其串行通信35.4.1 串行数据通信基础 并并 行行 数数 据据 传传 送送串串 行行 数数 据据 传传 送送原原 理理各数据位同时传送各数据位同时传送数据位按位顺序进行数据位按位顺序进行优优 点点传送速度快、效率高传送速度快、效率高最少只需一根传输线即可完成:成本低最少只需一根传输线即可完成:成本低缺缺 点点数据位数数据位数传输线根数:成本高传输线根数:成本高速度慢速度慢应应 用用传送距离传送距离30米,用于计算机内部米,用于计算机内部几米几千公里,用于计算机与外设之间几米几千公里,用于计算机与外设之间串行接口及其串行通信45.4.1 串行数据通信基础二、串行通信的

3、基本方式二、串行通信的基本方式 ( (一一) )异步通信异步通信 以字符为传送单位以字符为传送单位, ,用用起始位起始位和和停止位停止位标标识识每个字符的每个字符的开始开始和和结束字结束字 符符,间隔不固定,只,间隔不固定,只需字符传送时同步即可。需字符传送时同步即可。 异步通信常用格式:字符帧异步通信常用格式:字符帧D0D1D2D3D4D5D6D7停止位停止位起始位起始位串行接口及其串行通信55.4.1 串行数据通信基础异步通信的双方需要两项约定:异步通信的双方需要两项约定:1.1.字符格式:字符格式: 一帧字符位数的规定:数据位,校验位,起始位一帧字符位数的规定:数据位,校验位,起始位和停

4、止位。和停止位。2.2.波特率波特率( (位位/ /秒秒) )和传送速率的规定:和传送速率的规定: 例:例:要求每秒传送要求每秒传送120120个字符,每帧为个字符,每帧为1010位(数位(数据据8 8位)。位)。 解:解: B=120B=12010=120010=1200波特波特 每位每位0.83ms0.83ms 数据位数据位传送速率传送速率=120=1208=9608=960位位/ /秒秒帧帧图图5 15 异步串行通信的字符格式异步串行通信的字符格式起始位起始位数据位数据位0(n 1)位)位奇偶位奇偶位停止位停止位起始位起始位位时间位时间串行接口及其串行通信65.4.1 串行数据通信基础

5、( (二二) )同步通信方式同步通信方式同步字符1同步字符2数据Td 图5.2 同步通信的格式 在同步通信中,以一串字符为一个传送单位,字符间不在同步通信中,以一串字符为一个传送单位,字符间不加标识位,加标识位,在一串字符开始在一串字符开始 用同步字符标识用同步字符标识。如果发送的数。如果发送的数据块之间有时间间隔,则发送同步字符填充,使发送和接收据块之间有时间间隔,则发送同步字符填充,使发送和接收双方同步双方同步。串行接口及其串行通信75.4.1 串行数据通信基础三、串行接口功能:三、串行接口功能:(1 1)发送器:并)发送器:并串数据格式转换,添加标识位和串数据格式转换,添加标识位和校验位

6、,一帧发送结束,设置结束标志,申请中校验位,一帧发送结束,设置结束标志,申请中断。断。(2 2)接收器:串)接收器:串并数据格式转换,检查错误,去并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,掉标识位,保存有效数据,设置接收结束标志,申请中断。申请中断。(3 3)控制器:接收编程命令和控制参数,设置工作)控制器:接收编程命令和控制参数,设置工作方式:同步方式:同步/ /异步、字符格式、波特率、校验方式、异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。数据位与同步时钟比例等。串行接口及其串行通信85.4.1 串行数据通信基础四、串行数据传送方向(通路形式):四、

7、串行数据传送方向(通路形式):1 1、单工通讯:单工通讯:数据单向传送。数据单向传送。 (1 1条数据线,单向)条数据线,单向)2 2、半双工通讯:半双工通讯:数据可数据可分时分时双向传送。双向传送。 (1 1条或条或2 2条数据线,双向)条数据线,双向)3 3、全双工通讯:全双工通讯:可可同时同时进行发送和接收。进行发送和接收。 (2 2条数据线,双向)条数据线,双向)串行接口及其串行通信95.4.1 串行数据通信基础 发送器发送器接收器接收器地线地线数据线数据线单工形式串行通信单工形式串行通信发送接发送接收器收器接收发接收发送器送器地线地线数据线数据线 半双工形式串行通信半双工形式串行通信

8、发送接发送接收器收器接收发接收发送器送器地线地线数据线数据线全双工形式串行通信全双工形式串行通信串行接口及其串行通信105.4.1 串行数据通信基础五、异步串行通信的信号形式五、异步串行通信的信号形式 1 1、采用数字信号直接传送(适合于近程通信)。、采用数字信号直接传送(适合于近程通信)。 在传送过程中在传送过程中不改变原数据代码的波形和频率。不改变原数据代码的波形和频率。这种数据传这种数据传送方式称之为送方式称之为基带传送方式基带传送方式。通信双方只需用传输线。通信双方只需用传输线把两端的接把两端的接口电路直接连起来口电路直接连起来即可实现。即可实现。 2 2、采用频率调制法,也叫频带传送

9、方式(适合于远用频率调制法,也叫频带传送方式(适合于远程通信)。程通信)。 远距离直接传输数字信号,信号会发生畸变,因此要把数字信远距离直接传输数字信号,信号会发生畸变,因此要把数字信号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电号转变为模拟信号再进行传送。可利用光缆、专用通信电缆或电话线等连接。话线等连接。串行接口及其串行通信115.4.1 串行数据通信基础发 方收 方解 调 器调 制 器“ 0”“ 1”“ 0”市 话 线电 平 信 号频 率 信 号“ 1”通常:通常: “1”:1270Hz或或2225Hz; “0”:1070Hz或或2025Hz。串行接口及其串行通信125.4.1

10、 串行数据通信基础 因通信时(有干扰)信号要衰减,所以常采用因通信时(有干扰)信号要衰减,所以常采用RS232RS232电平负逻辑,拉开电平负逻辑,拉开“0”0”和和“1”1”的电压档次,的电压档次,以免信息出错:以免信息出错:TTL正逻辑:正逻辑:“0”: 0 0.8V;“1”: 2.4V+5V。TTL电平直接传输距电平直接传输距离一般不超过离一般不超过1.5米。米。RS-232C(电平转换芯片为电平转换芯片为MAX232)RS-422RS-485RS232负逻辑(负逻辑(EIA电平):电平):“0”:+3V+25V;“1”: -3V -25V。最大传输信息的长度为最大传输信息的长度为15米

11、。米。Electronic Industries Electronic Industries Association,Association,电子工业联合会电子工业联合会串行接口及其串行通信135.4.2 MCS-51串行口及控制寄存器MCSMCS 5151系列单片机的串行口是全双工的,这系列单片机的串行口是全双工的,这个口既可以用于网络通信,也可以实现串行异个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。在步通信,还可以作为同步移位寄存器使用。在串行口中可供用户使用的是它的寄存器,因此串行口中可供用户使用的是它的寄存器,因此了解其寄存器结构对用户来说是十分重要的

12、。了解其寄存器结构对用户来说是十分重要的。一、一、MCS-51MCS-51串行口寄存器结构串行口寄存器结构串行接口及其串行通信串行接口输入串行接口输入/ /输出引脚:输出引脚:TXD(P3.1)TXD(P3.1)、RXD(P3.0)RXD(P3.0)发送发送SBUFSBUF(99H99H)接收接收SBUFSBUF(99H99H)输入移位寄存器输入移位寄存器TITI(发送中断)(发送中断)TXDTXD串行输出串行输出80518051内部总线内部总线RXDRXD串行输入串行输入RIRI(接收输入)(接收输入)移位时钟移位时钟图图5-23 MCS-515-23 MCS-51串行口寄存器结构串行口寄存

13、器结构串行接口及其串行通信 在接收方式下,串行数据通过引脚在接收方式下,串行数据通过引脚RXDRXD(P3.0P3.0)进入。由于在接收寄存器之间还有移位寄存器,从进入。由于在接收寄存器之间还有移位寄存器,从而构成了而构成了串行接收的双缓冲结构串行接收的双缓冲结构,以避免以避免在数据接在数据接收过程中收过程中出现帧重叠错误出现帧重叠错误,即在下一帧数据来时,即在下一帧数据来时,前一帧数据还没有读走。前一帧数据还没有读走。 在发送方式下,串行数据通过在发送方式下,串行数据通过TXDTXD(P3.1P3.1)送)送出。与接收数据情况不同,出。与接收数据情况不同,发送数据时发送数据时,由于,由于CP

14、UCPU是主动的是主动的,不会发生帧重叠错误,因此发送电路,不会发生帧重叠错误,因此发送电路就就不需双重缓冲结构不需双重缓冲结构,这样可以提高数据发送速,这样可以提高数据发送速度。度。串行接口及其串行通信165.4.2 MCS-51串行口及控制寄存器串行通信数据格式:按不同方式,一帧数据串行通信数据格式:按不同方式,一帧数据位数为位数为 8/10/118/10/11。 发送发送/ /接收时,数据皆接收时,数据皆低位低位在前在前。 D0D1D2D3D4D5D6D8停止位停止位起始位起始位D7D0D1D2D3D4D5D6D7停止位停止位起始位起始位D0D1D2D3D4D5D6D7串行接口及其串行通

15、信175.4.2 MCS-51串行口及控制寄存器一帧字符发送一帧字符发送/ /接收结束,接收结束,置位标志位置位标志位(TI/RI)(TI/RI),并申请串行中断。并申请串行中断。 串行口中断控制:中断允许位串行口中断控制:中断允许位ESES、总允许、总允许EAEA; 串行中断入口:串行中断入口:0023H0023H。串行接口及其串行通信185.4.2 MCS-51串行口及控制寄存器二、串行通信控制寄存器二、串行通信控制寄存器 1.1.数据缓冲器数据缓冲器SBUFSBUF发送发送SBUFSBUF和接收和接收SBUFSBUF共用一个地址共用一个地址99H99H。 1 1)发送)发送SBUFSBU

16、F存放待发送的存放待发送的8 8位数据,写入位数据,写入SBUFSBUF将同将同时启动发送。发送指令:时启动发送。发送指令: MOVMOVSBUFSBUF,A A2 2)接收)接收SBUFSBUF存放已接收成功的存放已接收成功的8 8位数据,供位数据,供CPUCPU读读取。读取串行口接收数据指令:取。读取串行口接收数据指令: MOV AMOV A,SBUFSBUF串行接口及其串行通信195.4.2 MCS-51串行口及控制寄存器2.2.电源控制寄存器电源控制寄存器PCONPCON SMOD SMOD(PCON.7PCON.7):波特率加倍控制位。):波特率加倍控制位。 SMOD=1SMOD=1

17、,波特率加倍;,波特率加倍; SMOD=0SMOD=0,则不加倍。,则不加倍。3.3.串行口控制串行口控制/ /状态寄存器状态寄存器SCON(98H)SCON(98H):串行接口及其串行通信位地址位地址9FH9EH9DH9CH9BH9AH99H98H位符号位符号SM0SM1SM2RENTB8RB8TIRISM0 SM1工作方式工作方式功功 能能波特波特 率率 0 0 方式方式0同步移位寄存器同步移位寄存器fosc/12 0 1 方式方式110位异步收发位异步收发由定时器控制由定时器控制 1 0 方式方式211位异步收发位异步收发fosc/32或或/64 1 1 方式方式311位异步收发位异步收

18、发由定时器控制由定时器控制SM0SM0、SM1SM1:选择串行口选择串行口4 4种工作方式。种工作方式。串行接口及其串行通信215.4.2 MCS-51串行口及控制寄存器SM2SM2:多机控制位,用于多机通讯。多机控制位,用于多机通讯。RENREN:允许接收控制位,允许接收控制位,REN=1REN=1,允许接收;,允许接收; REN=0REN=0,禁止接收。,禁止接收。TB8TB8:发送的第发送的第9 9位数据位,可用作校验位和地址位数据位,可用作校验位和地址/ /数数 据标识位。据标识位。RB8RB8:接收的第接收的第9 9位数据位或停止位。位数据位或停止位。TI TI :发送中断标志,发送

19、一帧结束,发送中断标志,发送一帧结束,TI=1TI=1,必须,必须软软 件清零件清零;RI RI :接收中断标志,接收一帧结束,接收中断标志,接收一帧结束,RI=1RI=1,必须,必须软软 件清零件清零。串行接口及其串行通信225.4.3 MCS-51串行通信工作方式及应用一)方式一)方式0 0:SM0=0,SM1=0SM0=0,SM1=0 在方式在方式0 0下下, ,是把串行口作为是把串行口作为同步移位寄存器同步移位寄存器使用使用, ,这时以这时以RXDRXD(P3.0)(P3.0)端作为数据移位的端作为数据移位的入入口和口和出出口口, ,而由而由TXDTXD(P3.1)(P3.1)端提供端

20、提供移位时钟脉冲移位时钟脉冲. .移位数据移位数据的发送和接收以的发送和接收以8 8位为一组位为一组, ,低位在前高位在后。低位在前高位在后。1 1、数据的发送与接收、数据的发送与接收 发送和接收的时序如下图所示:发送和接收的时序如下图所示: 串行接口及其串行通信235.4.3 MCS-51串行通信工作方式及应用(a)(b) 发送时序发送时序写入写入SBUFRXD输出输出TXDTID0D1D2D3D4D5D6D7写写REN=1RI=0RXD输入输入RI 接收时序接收时序串行接口及其串行通信DATA CD4094CLK STB并行输出并行输出80C51 RXD TXD P1.0Q8 CD4014

21、CLK P/S并行输入并行输入80C51 RXD TXD P1.0图图5 24串行口与串行口与CD4094配合配合图图5 25串行口与串行口与CD4014配合配合 使用方式使用方式0 0实现数据的移位输入输出时,实际上是实现数据的移位输入输出时,实际上是把串行把串行口变成为并行口使用口变成为并行口使用。串行口作为并行口输出使用时,要有。串行口作为并行口输出使用时,要有“串入并出串入并出”的移位寄存器(例如的移位寄存器(例如CD4094CD4094或或74LS16474LS164、74HC16474HC164等)配合,其电路连接如图等)配合,其电路连接如图5 5 2424所示。所示。串行接口及其

22、串行通信255.4.3 MCS-51串行通信工作方式及应用 发送过程可叙述如下:发送过程可叙述如下: 数据预先写入串行口数据缓冲器,然后从串行口数据预先写入串行口数据缓冲器,然后从串行口RXDRXD端,在移位时钟脉冲(端,在移位时钟脉冲(TXDTXD)的控制下,逐位)的控制下,逐位移入移入CD4094CD4094。当。当8 8位数据全部移出后,位数据全部移出后,SCONSCON寄存器寄存器的发送中断的发送中断TITI被自动置被自动置“1”1”。其后主程序就可用。其后主程序就可用中断或查询的方法,通过设置中断或查询的方法,通过设置STBSTB状态的控制,把状态的控制,把CD4094CD4094的

23、内容并行输出。的内容并行输出。串行接口及其串行通信 如果把能实现如果把能实现“并入串出并入串出”功能的移位寄存器(例如功能的移位寄存器(例如CD4014CD4014或或7416574165)与串行口配合使用,就可以把串行口扩展为)与串行口配合使用,就可以把串行口扩展为一个并行输入口使用。其电路如图一个并行输入口使用。其电路如图5-255-25所示。所示。 数据接收过程如下:数据接收过程如下:首先将并行输入数据写入首先将并行输入数据写入CD4014,CD4014CD4014,CD4014移出的串行数据经移出的串行数据经R RX XD D端串行输入到串行口数据缓冲器,同样由端串行输入到串行口数据缓

24、冲器,同样由T TX XD D端提供移位时端提供移位时钟脉冲。钟脉冲。8 8位数据串行接收需要有允许接收的控制,具体由位数据串行接收需要有允许接收的控制,具体由SCONSCON寄存器的寄存器的RENREN位实现。位实现。REN=0,REN=0,禁止接收;禁止接收;REN=1,REN=1,允许接收。允许接收。当软件置位当软件置位RENREN时,即开始从时,即开始从R RX XD D端输入数据(低位在前),当端输入数据(低位在前),当接收到接收到8 8位数据时,硬件自动置位接收中断标志位数据时,硬件自动置位接收中断标志RIRI(由用户通(由用户通过软件请过软件请0 0)。)。串行接口及其串行通信

25、2 2、应用举例、应用举例 使用使用CD4094CD4094的输出端接的输出端接8 8只发光二极管,利用它的串入并出只发光二极管,利用它的串入并出功能,把发光二极管从左向右依次点亮,并反复循环之。按此功能,把发光二极管从左向右依次点亮,并反复循环之。按此要求所做的电路连接如图要求所做的电路连接如图5 5 2626所示。所示。 DATA CD4094CLK STB80C51 RXD TXD P1.0图图5 26 串行移位输出电路串行移位输出电路 方式方式0 0时,移位操作的时,移位操作的波特率是固定的波特率是固定的,为,为单片机晶振单片机晶振频率的十二分之一频率的十二分之一。按此波特率也就是一个

26、机器周期移一。按此波特率也就是一个机器周期移一位。位。串行接口及其串行通信 MOV SCONMOV SCON,#00H #00H ;串行口方式;串行口方式0 0工工作作 CLR ESCLR ES ;禁止串行中;禁止串行中断断 MOV AMOV A,#80H#80H ;发光管从左边亮起;发光管从左边亮起DELRDELR:CLR P1.0CLR P1.0 ;关闭并行输出;关闭并行输出 MOV SBUFMOV SBUF,A A;串行输出;串行输出 JNB TIJNB TI,;状态查询;状态查询 SETB P1.0SETB P1.0;开启并行输出;开启并行输出 ACALL DELAYACALL DEL

27、AY;状态维持时间;状态维持时间 CLR TICLR TI;清发送中断标志;清发送中断标志 RR ARR A ;发光组合右移;发光组合右移 AJMP DELRAJMP DELR;继续;继续采用查询方式发送数据可编程序如下:采用查询方式发送数据可编程序如下:串行接口及其串行通信295.4.3 MCS-51串行通信工作方式及应用二二) ) 方式方式1 1:SM0=1,SM1=0SM0=1,SM1=0方式方式1是是10位为一帧的异步串行通信方式。共包位为一帧的异步串行通信方式。共包括括1个起始位,个起始位,8个数据位和个数据位和1个停止位。其帧格式为:个停止位。其帧格式为: 起始D0D1D2D3D4

28、D5D6D7停止1 1、数据的发送与接收、数据的发送与接收串行接口及其串行通信 数据发送是由一条写发送缓冲器(数据发送是由一条写发送缓冲器(SBUFSBUF)的指令开始的,)的指令开始的,随后在串行口由硬件自动加入起始位和停止位,构成一个完随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由整的帧格式,然后在移位脉冲的作用下,由TXDTXD端串行输出。端串行输出。一个字符帧发送完后,使一个字符帧发送完后,使TXDTXD输出线维持在输出线维持在“1”1”状态下,并状态下,并将将SCONSCON寄存器的寄存器的TITI置置“1”1”,通知,通知CPUCPU可以

29、接着发送下一个字可以接着发送下一个字符。符。 数据接收时,数据接收时,SCONSCON的的RENREN位应处于允许接收状态(位应处于允许接收状态(REN REN = 1= 1)。在此前提下,串行口采样)。在此前提下,串行口采样RXDRXD端,当采样到从端,当采样到从“1”1”向向“0”0”的状态跳变时,就认定是接收到起始位。随后在移的状态跳变时,就认定是接收到起始位。随后在移位脉冲的控制下,把位脉冲的控制下,把RXDRXD端上的数据逐位移入移位寄存器,端上的数据逐位移入移位寄存器,当当8 8位数据及停止位全部移入后,根据以下状态,进行相应位数据及停止位全部移入后,根据以下状态,进行相应操作。操

30、作。串行接口及其串行通信 如果如果RI=0RI=0、SM2=0,SM2=0,则接收控制器发出装载则接收控制器发出装载SBUFSBUF信号,将信号,将8 8位数据装入接收数据缓冲器位数据装入接收数据缓冲器SBUF,SBUF,停止位装入停止位装入RB8,RB8,并置并置RI=1RI=1,向向CPUCPU申请中断。申请中断。 如果如果RI=0RI=0、SM2=1SM2=1,那么只有停止位为,那么只有停止位为1 1才发生上述操作。才发生上述操作。 如果如果RI=0RI=0、SM2=1SM2=1且停止位为且停止位为0 0、则所接收的数据不装入、则所接收的数据不装入SBUF,SBUF,数据将会丢失。数据将

31、会丢失。如果如果RI=1RI=1,则所接收的数据在任何情况下都不装入,则所接收的数据在任何情况下都不装入SBUF,SBUF,即即数据丢失。数据丢失。无论出现哪一种情况,位检测器将继续采样无论出现哪一种情况,位检测器将继续采样RXDRXD引脚的负跳变,引脚的负跳变,以便接收下一帧信息。以便接收下一帧信息。接收采用移位寄存器和接收采用移位寄存器和SBUFSBUF双缓冲结构,以避免在接收后一帧数双缓冲结构,以避免在接收后一帧数据之前,据之前,CPUCPU尚未及时响应中断而将前一帧数据取走,造成两帧数尚未及时响应中断而将前一帧数据取走,造成两帧数据重叠。采用双缓冲结构后,前、后两帧数据进入据重叠。采用

32、双缓冲结构后,前、后两帧数据进入SBUFSBUF的时间间隔的时间间隔有有1010个机器周期。在后一帧数据送入个机器周期。在后一帧数据送入SBUFSBUF之前,之前,CPUCPU有足够时间将有足够时间将前一帧数据取走。前一帧数据取走。串行接口及其串行通信DATA1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 1016Tc起始位起始位RXDRXC启动检测启动检测确认启动位确认启动位采样数据采样数据图图5-22 串行通信方式串行通信方式1对接收数据的采样对接收数据的采样由于发送、接收双方各自使用自己的时钟,因而两者的频由于发送、接收双

33、方各自使用自己的时钟,因而两者的频率总有少许差异。为了避免这种影响,数据采样速率采用波特率总有少许差异。为了避免这种影响,数据采样速率采用波特率率1616倍频,在数据位中间,用第倍频,在数据位中间,用第7 7、8 8、9 9个脉冲采样个脉冲采样3 3次数据位,次数据位,并并3 3中取中取2 2保留采样值。保留采样值。串行接口及其串行通信写入写入SBUF采样采样(a) 发送时序图发送时序图TXD数据输出数据输出TID0D1D2D3D4D5D6D7停止位停止位起始位起始位RXD输入数据输入数据(b) 接收时序图接收时序图D0D1D2D3D4D5D6D7停止位停止位起始位起始位RI检测检测负跳变负跳

34、变2 2、发送时序和接收时序:、发送时序和接收时序:串行接口及其串行通信3 3、波特率设置、波特率设置 假定计数初值为假定计数初值为X X,则定时器,则定时器1 1溢出周期为:溢出周期为: 12fosc(256-X)溢出率为溢出周期的倒数。故波特率计算公式为:溢出率为溢出周期的倒数。故波特率计算公式为:波特率波特率=2SMOD32fosc12(256-X)当定时器当定时器1 1作波特率发生器使用时,选用定时方式作波特率发生器使用时,选用定时方式2 2。之所以选择工作方式。之所以选择工作方式2 2,是因为,是因为方式方式2 2具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特

35、率具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定。更加稳定。 方式方式1 1的波特率由定时器的波特率由定时器/ /计数器的溢出率和计数器的溢出率和SMODSMOD决定,即决定,即方式方式1 1波特率波特率= =(2 2SMODSMODT1T1溢出率)溢出率)/32/32串行接口及其串行通信 X=2SMODfosc3212波特率波特率256 - 实际使用时,总是先确定波特率,再计算定时器实际使用时,总是先确定波特率,再计算定时器1 1的计数初值,然后进行定时器的初始化。根据上述的计数初值,然后进行定时器的初始化。根据上述波特率计算公式,得出计数初值的计算公式为:

36、波特率计算公式,得出计数初值的计算公式为:串行接口及其串行通信2 2、应用举例、应用举例双机通信双机通信 单片机间的串行通信通常可分为单片机间的串行通信通常可分为双机通信和多机通信双机通信和多机通信两类。而两类。而串行口工作方式串行口工作方式1 1只能用于双机通信,不能用于多只能用于双机通信,不能用于多机通信机通信,故作为方式,故作为方式1 1的应用,这里举一双机通信的例子。的应用,这里举一双机通信的例子。又因串行通信的程序设计,一般又因串行通信的程序设计,一般可采用查询方式或中断方可采用查询方式或中断方式两种式两种,这里仅以查询方式为例加以说明,这里仅以查询方式为例加以说明 。 为了确保通信

37、成功、有效,现规定双机异步通信程序为了确保通信成功、有效,现规定双机异步通信程序“协协议议”如下:如下: 通信双方均采用系统时钟频率通信双方均采用系统时钟频率fosc = 12MHzfosc = 12MHz,甲机发送,甲机发送数据,乙机接收数据,波特率为数据,乙机接收数据,波特率为24002400。通信开始时,甲机发。通信开始时,甲机发送呼叫信号送呼叫信号“0606”,询问乙机,询问乙机是否可以接收数据是否可以接收数据;乙机;乙机收到收到呼叫信号后呼叫信号后,若,若同意接收同意接收数据则数据则发回发回“00”00”作为应答作为应答,否则否则发发“15”15”表示暂不能接收数据表示暂不能接收数据

38、;甲机只有收到乙机的应答信;甲机只有收到乙机的应答信号号“00”00”后才可把存放在外部数据存储器的内容发送给乙机,后才可把存放在外部数据存储器的内容发送给乙机,否则继续向乙机呼叫,直到乙机同意接收。其数据格式为:否则继续向乙机呼叫,直到乙机同意接收。其数据格式为: 串行接口及其串行通信字节数字节数n数据数据1数据数据n累加效验和累加效验和累加效验和累加效验和是指字节数是指字节数n n、数据、数据1 1、数据、数据n n这(这(n+1n+1)个字)个字节节内容内容的算术累加和。的算术累加和。 乙机根据接收到的乙机根据接收到的“效验和效验和”判断已接收到的数据是否判断已接收到的数据是否正确。若接

39、收正确。若接收正确正确,向甲机发回,向甲机发回“0FH0FH”信号,信号,否则发回否则发回“F0H”F0H”信号给甲机信号给甲机。甲机只有。甲机只有接收到接收到“0FH”0FH”信号才算完成信号才算完成发送任务,返回调用的程序,否则继续呼叫,重发数据。发送任务,返回调用的程序,否则继续呼叫,重发数据。 甲机发送程序甲机发送程序 发送程序约定:定时器发送程序约定:定时器T1T1初始化为模式初始化为模式2 2,SMOD = 1SMOD = 1。计数初值计数初值 : X= 211061232122400256 -=230=0E6H串行接口及其串行通信Y YN N等待乙机回答等待乙机回答N N发送呼叫

40、信号发送呼叫信号06H06H 是是00H00H?开始开始定时器、串行口初始化定时器、串行口初始化置置DPTRDPTR、长度计数器、长度计数器R7R7初值初值置效验寄存器置效验寄存器R6R6初值初值发送字节长度数发送字节长度数发送数据发送数据发送验收和发送验收和 发送完?发送完? 等待乙机回答等待乙机回答 传送正确吗?传送正确吗?返回返回N N图图5 5 27 27 双机通信甲机查询发送程序框图双机通信甲机查询发送程序框图Y YY Y串行接口及其串行通信串行口初始化为串行口初始化为方式方式1 1,允许接收;内部允许接收;内部RAM 31HRAM 31H和和30H30H单元存放单元存放发送的数据块

41、首地址发送的数据块首地址;R7R7存放发送的数据块长度;存放发送的数据块长度;R6R6为累加和为累加和寄存器。寄存器。 发送程序清单:发送程序清单: MOV TMODMOV TMOD,#20H#20H;T1T1初始化模式初始化模式2 2 MOV TL1 MOV TL1, #0E6H#0E6H;置计数初值;置计数初值 MOV TH1MOV TH1, #0E6H#0E6H SETB TR1 SETB TR1;启动;启动T1T1 MOV SCON MOV SCON, #50H #50H ;串口为方式;串口为方式1 1,允,允许接收许接收 MOV PCONMOV PCON, #80H #80H ;置;

42、置SMOD=1SMOD=1FMT-RAMFMT-RAM: MOV DPHMOV DPH, 31H31H;置;置DPTRDPTR指针指针 MOV DPLMOV DPL, 30H 30H MOV R7 MOV R7, #2FH #2FH ;送字节数至;送字节数至R7R7 MOV R6 MOV R6, #00H#00H;清累加和寄存器;清累加和寄存器 TX-ACK: MOV A, #06H ; TX-ACK: MOV A, #06H ;发呼叫信号发呼叫信号 MOV SBUF, A MOV SBUF, A串行接口及其串行通信40WAIT1: JBC TI,WAIT1: JBC TI, RX-YES ;

43、RX-YES ;等待发送完等待发送完 SJMP WAIT1 SJMP WAIT1RX-YES: JBC RI, NEXT1 ;RX-YES: JBC RI, NEXT1 ;接收乙机回答接收乙机回答 SJMP RX-YES SJMP RX-YESNEXT1: MOV A, SBUFNEXT1: MOV A, SBUF ; ;判乙机是否同意接收判乙机是否同意接收 CJNE A, #00H,TX-ACK ; CJNE A, #00H,TX-ACK ;不同意接收则不同意接收则继续呼叫继续呼叫TX-BYTES: MOV A, R7 ;TX-BYTES: MOV A, R7 ;同意同意, ,发送待发发送待

44、发字节个数字节个数 MOV SBUF ,A MOV SBUF ,A ADD A,R6 ; ADD A,R6 ;累累加字节个数加字节个数 MOV R6, A MOV R6, A WAIT2WAIT2: JBC TIJBC TI, TX-NEWSTX-NEWS;字节个数发送完?;字节个数发送完? SJMP WAIT2SJMP WAIT2;没完等待;没完等待串行接口及其串行通信TX-NEWSTX-NEWS:MOVX AMOVX A, DPTR DPTR ;发送数据;发送数据 MOV SBUFMOV SBUF, A A ADD A ADD A, R6R6; 形成累加形成累加和和 MOV R6MOV R

45、6,A A INC DPTR INC DPTR ;数据指针加;数据指针加1 1WAIT3WAIT3: JBC TIJBC TI,NEXT2NEXT2 ; ;等待一帧数据发送完毕等待一帧数据发送完毕 SJMP WAIT3 SJMP WAIT3NEXT2NEXT2: DJNZ R7DJNZ R7,TX-NEWSTX-NEWS;判数据发送完否?;判数据发送完否?TX-SUMTX-SUM: MOV AMOV A,R6R6;发送完,累加和发送乙机;发送完,累加和发送乙机 MOV SBUFMOV SBUF, A AWAIT4WAIT4: JBC TIJBC TI, RX-0FHRX-0FH;累加和发送完否

46、?;累加和发送完否? SJMP WAIT4SJMP WAIT4RX-0FHRX-0FH:JBC RIJBC RI,IF-0FHIF-0FH ;等待乙机回答;等待乙机回答 SJMP RX-0FHSJMP RX-0FHIF-0FHIF-0FH: MOV AMOV A,SBUFSBUF CJNE A CJNE A, #0FH#0FH, FMT-AM FMT-AM ;判传送正确否?;判传送正确否? RETRET ;正确返回;正确返回串行接口及其串行通信 乙机接收程序乙机接收程序 接收程序的约定:接收程序的约定: 波特率设置初始化,串行口初始化同发送程序。波特率设置初始化,串行口初始化同发送程序。 寄存

47、器设置:寄存器设置:31H31H和和30H30H存放接收数据缓冲区首址;存放接收数据缓冲区首址;R7R7为为数据块长度寄存器:数据块长度寄存器:R6R6为累加和寄存器。向甲机回答信息:为累加和寄存器。向甲机回答信息:0FH0FH为接收正常,为接收正常,F0HF0H为传送出错,为传送出错,00H00H为同意接收数据。为同意接收数据。 串行接口及其串行通信 是是06H?开始开始定时器、串行口初始化定时器、串行口初始化 置置DPTR、效验和、效验和R6初值初值 等待接收呼叫信号等待接收呼叫信号向甲机回送向甲机回送15H 向甲机回送向甲机回送00H 接收数据块长度接收数据块长度N 接收数据存外部接收数

48、据存外部RAM 地址指针地址指针DPTR加加1 数据接收完?数据接收完? 接收效验和接收效验和 传送正确吗?传送正确吗?向甲机回送向甲机回送F0H 向甲机回送向甲机回送0FH 返回返回NY图图5 28 双机通信乙机接收程序框图双机通信乙机接收程序框图YNY串行接口及其串行通信接收程序清单:接收程序清单:FMT-TSFMT-TS: MOV TMODMOV TMOD,#20H #20H ;T1T1初始化模式初始化模式2 2 MOV TL1 MOV TL1, #0E6H #0E6H ;置计数初值;置计数初值 MOV TH1MOV TH1, #0E6H #0E6H SETB TR1 SETB TR1

49、;启动;启动T1T1 MOV SCON MOV SCON,#50H #50H ;串行方式;串行方式1 1,允许接收允许接收 MOV PCONMOV PCON,#80H #80H ;SMOD=1,SMOD=1,波特率加倍波特率加倍FMT-RAMFMT-RAM:MOV DPHMOV DPH,31H 31H ;置;置DPTRDPTR地址指针地址指针 MOV DPLMOV DPL,30H30H MOV R6 MOV R6,#00H #00H ;效验和寄;效验和寄存器清零存器清零RX-ACKRX-ACK: JBC RIJBC RI,IF-06H IF-06H ;等待接收呼叫信号;等待接收呼叫信号 SJM

50、P RX-ACKSJMP RX-ACKIF-06HIF-06H: MOV AMOV A, SBUF SBUF ;判呼叫信号有误?;判呼叫信号有误? CJNE ACJNE A, #06H#06H,TX-15HTX-15HTX-00HTX-00H: MOV AMOV A,#00H#00H;向甲机回送同意接收信号;向甲机回送同意接收信号 MOV SBUFMOV SBUF, A A 串行接口及其串行通信WAIT1WAIT1: JBC TIJBC TI,RX-BYTESRX-BYTES;等待回送信号发送完;等待回送信号发送完 SJMP WAIT1 SJMP WAIT1 TX-15HTX-15H: MOV

51、 AMOV A, #15H #15H ;向甲机回送接收信号不正确;向甲机回送接收信号不正确 MOV SBUFMOV SBUF, A A WAIT2WAIT2: JBC TIJBC TI, HAVE1 HAVE1 ;等待不正确信号发送完;等待不正确信号发送完 SJMP WAIT2SJMP WAIT2HAVE1HAVE1: LJMP RX-ACKLJMP RX-ACK;返回接收呼叫信号状态;返回接收呼叫信号状态RX-BYTESRX-BYTES:JBC RIJBC RI, HAVE2HAVE2;接收数据块长度;接收数据块长度 SJMP RX-BYTESSJMP RX-BYTESHAVE2HAVE2:

52、 MOV AMOV A,SBUFSBUF;给长度寄存器赋值;给长度寄存器赋值 MOV R7MOV R7, A A MOV R6 MOV R6,A A ;形成累加和;形成累加和RX-NEWSRX-NEWS:JBC RIJBC RI, HAVE3HAVE3;接收数据;接收数据 SJMP RX-NEWSSJMP RX-NEWSHAVE3HAVE3: MOV AMOV A, SBUFSBUF;接收数据并存入外部;接收数据并存入外部RAMRAM中中 MOVX DPTRMOVX DPTR, A A串行接口及其串行通信 INC DPTR INC DPTR ;修改地址指针;修改地址指针 ADD AADD A,

53、 R6R6;形成累加和;形成累加和 MOV R6MOV R6,A A DJNZ R7 DJNZ R7, RX-NEWS RX-NEWS ;判数据接收完否?;判数据接收完否?RX-SUMRX-SUM:JBC RIJBC RI, HAVE4HAVE4 ;接收效验和;接收效验和 SJMP RX-SUMSJMP RX-SUMHAVE4HAVE4: MOV AMOV A,SBUFSBUF ;判传送是否正确;判传送是否正确(SBUF)(SBUF) CJNE A CJNE A,R6R6, TX-ERR TX-ERR TX-RIGHTTX-RIGHT:MOV AMOV A,#0FH #0FH ;向甲机应答传送

54、正确;向甲机应答传送正确 MOV SBUFMOV SBUF, A AWAIT3WAIT3: JBC TIJBC TI, GOODGOOD;正确返回;正确返回 SJMP WAIT3SJMP WAIT3TX-ERRTX-ERR: MOV AMOV A, #0F0H#0F0H;向甲机应答传送错误;向甲机应答传送错误 MOV SBUFMOV SBUF, A AWAIT4WAIT4: JBC TIJBC TI, AGAINAGAIN SJMP WAIT4 SJMP WAIT4AGAINAGAIN: LJMP FMT-RAMLJMP FMT-RAM;返回重新接收数据状态;返回重新接收数据状态GOODGOO

55、D: RETRET;返回被调用主程序;返回被调用主程序串行接口及其串行通信 3 3、通信程序的调试及故障排除、通信程序的调试及故障排除 串行口通信程序调试,串行口通信程序调试,只有当通信双方的硬件和只有当通信双方的硬件和软件都正确无误时,才能实现成功通信。软件都正确无误时,才能实现成功通信。如果调试中如果调试中出现问题,出现问题,首先首先应考虑应考虑硬件故障硬件故障,其表现是:通信线,其表现是:通信线路中的路中的芯片损坏,接触不良芯片损坏,接触不良等。等。为了迅速准确查明故为了迅速准确查明故障点,可编制一测试小程序,如编一个连续发送字符障点,可编制一测试小程序,如编一个连续发送字符串串“MCS

56、-51Microcomputer”MCS-51Microcomputer”的程序,在该程序中不的程序,在该程序中不安排接收对方的回答信息,分别在通信的双方单独运安排接收对方的回答信息,分别在通信的双方单独运行行。程序如下:。程序如下:串行接口及其串行通信TSIOTSIO:MOV TMODMOV TMOD,#20H#20H;T1T1模式模式2 2,fosc=11.059MHzfosc=11.059MHz MOV TL1, #0E8H MOV TL1, #0E8H;12001200波特率波特率 MOV TH1MOV TH1,#0E8H #0E8H MOV SCON MOV SCON, #042H

57、#042H ;串行口方式;串行口方式1 1,TI=1TI=1 SETB TR1 SETB TR1 ;启动;启动T1T1TS04TS04:MOV R4 MOV R4 ,#00H#00H ;从首字符开始;从首字符开始 MOV DPTRMOV DPTR, #ASAB #ASAB ;查串行口输出表中字符串;查串行口输出表中字符串TS01TS01:MOV AMOV A,R4R4 MOVC A MOVC A,A+DPTR A+DPTR JZ TS04 JZ TS04 ;字符串发送完重发,结;字符串发送完重发,结束符束符TS03TS03:JBC TIJBC TI, TS02 TS02 ;为;为00H00H

58、SJMP TS03 SJMP TS03串行接口及其串行通信TS02TS02: MOV SBUFMOV SBUF, A A;发送串中字符;发送串中字符 INC R4INC R4;修改表中指针;修改表中指针 SJMP TS01SJMP TS01ASABASAB:DB MCSDB MCS 51Microcomputer51Microcomputer;字符串表;字符串表 DB 0AHDB 0AH,0DH0DH,00H00H 此时用此时用示波器可观察接收方一端(示波器可观察接收方一端(RXDRXD)引脚的信号波)引脚的信号波形,若观察不到,即可断定此通路存在问题形,若观察不到,即可断定此通路存在问题。这

59、时仍用示波。这时仍用示波器逐一观察各连接点、芯片输入器逐一观察各连接点、芯片输入/ /输出各端点的波形,从而输出各端点的波形,从而可迅速故障定位。可迅速故障定位。 对于对于软故障软故障,主要考虑,主要考虑程序的容错性程序的容错性。如前面介绍的收、。如前面介绍的收、发程序实例,如果发程序实例,如果发方发方比比收方收方先运行程序,则先运行程序,则发方发方将会因等将会因等不到收方的回答信号而不到收方的回答信号而陷于死循环陷于死循环;而;而收方收方因丢失发方发过因丢失发方发过来的呼叫信号也将来的呼叫信号也将陷于等待陷于等待。解决此类问题的办法是解决此类问题的办法是在发送程在发送程序中,凡在需等待对方回

60、答的地方,都适当延时序中,凡在需等待对方回答的地方,都适当延时,一旦超过,一旦超过一定时间,就返回重新呼叫,直至接通联系为止。一定时间,就返回重新呼叫,直至接通联系为止。 串行接口及其串行通信505.4.3 MCS-51串行通信工作方式及应用三三) ) 方式方式2 2和方式和方式3 3在方式在方式2 2下,字符还是下,字符还是8 8个数据位,只不过个数据位,只不过增加了一个增加了一个第第9 9数据位(数据位(D8D8),而且其),而且其功能由用户确定功能由用户确定,是一个,是一个可编程位。可编程位。 起始D0D1D2D3D4D5D6D7D8停止方式方式2 2 方式方式2 2是是1111位为一帧

温馨提示

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

评论

0/150

提交评论