《第七章 串行通信及其接口.ppt》由会员分享,可在线阅读,更多相关《第七章 串行通信及其接口.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机应用技术单片机应用技术单片机应用技术主讲教师:主讲教师:苏晓龙苏晓龙全校公共选修课全校公共选修课计算机学院信息科学系计算机学院信息科学系办公室:计办公室:计A315-1答疑地点:答疑地点:计计A315-1E-mail:单片机应用技术单片机应用技术第第7章章 串行通信及其接口串行通信及其接口7.1串行通信的基本概念串行通信的基本概念7.2 MCS-51的串行口的串行口7.3 串行口的控制串行口的控制7.4 串行口的串行口的应用应用单片机应用技术单片机应用技术7.1 串行通信的基本概念串行通信的基本概念返回本章首页计算机与外部的信息交换称为通信计算机与外部的信息交换称为通信计算机与外部的信息
2、交换称为通信计算机与外部的信息交换称为通信,基本的通信方基本的通信方基本的通信方基本的通信方式有两种式有两种式有两种式有两种:并行通信并行通信并行通信并行通信(parallel communication)和和和和串行串行串行串行通信通信通信通信(serial communication)。并行通信:并行通信:所传送数据的各位同时发送或接收。所传送数据的各位同时发送或接收。串行通信:串行通信:所传送数据的各位按顺序一所传送数据的各位按顺序一位一位地发送或接收。位一位地发送或接收。并行通信并行通信并行通信并行通信:速度快速度快速度快速度快,但成本高但成本高但成本高但成本高,传输距离受限传输距离受
3、限传输距离受限传输距离受限;串行通信串行通信串行通信串行通信:通信线少通信线少通信线少通信线少,传输距离远传输距离远传输距离远传输距离远,但速度较慢但速度较慢但速度较慢但速度较慢单片机应用技术单片机应用技术7.1 串行通信的基本概念串行通信的基本概念返回本章首页图图7.1 并行通信与串行通信并行通信与串行通信(a)并行通信;并行通信;(b)串行通信串行通信 单片机应用技术单片机应用技术7.1 串行通信的基本概念串行通信的基本概念一一一一、串行通信按数据流传输方向分串行通信按数据流传输方向分1 1、单工单工单工单工(Simplex)(Simplex)两个传输站点之间一方只能发送两个传输站点之间一
4、方只能发送两个传输站点之间一方只能发送两个传输站点之间一方只能发送,另一方只能接收另一方只能接收另一方只能接收另一方只能接收TA ARB B数据流数据流数据流数据流2 2、半双工半双工半双工半双工(Half Duplex)(Half Duplex)两个传输站点之间任何一方都能发送数据,但由两个传输站点之间任何一方都能发送数据,但由两个传输站点之间任何一方都能发送数据,但由两个传输站点之间任何一方都能发送数据,但由于设备之间只有一条通信线路,在同一时刻只能在一于设备之间只有一条通信线路,在同一时刻只能在一于设备之间只有一条通信线路,在同一时刻只能在一于设备之间只有一条通信线路,在同一时刻只能在一
5、个方向上传输数据,如对讲机。个方向上传输数据,如对讲机。个方向上传输数据,如对讲机。个方向上传输数据,如对讲机。TA ATB B数据流数据流数据流数据流RR单片机应用技术单片机应用技术串行通信的基本概念串行通信的基本概念一、一、一、一、串行通信按数据流传输方向分串行通信按数据流传输方向分两个传输站点之间双方使用不同的通信线路两个传输站点之间双方使用不同的通信线路两个传输站点之间双方使用不同的通信线路两个传输站点之间双方使用不同的通信线路,同时同时同时同时发送和接收数据发送和接收数据发送和接收数据发送和接收数据.如电话。如电话。如电话。如电话。3 3、全双工全双工全双工全双工(Full Dupl
6、ex)(Full Duplex)TA ARB BRT数据流数据流数据流数据流数据流数据流数据流数据流单片机应用技术单片机应用技术串行通信的基本概念串行通信的基本概念二、二、串行通信的两种基本工作方式串行通信的两种基本工作方式异步方式、同步方式。异步方式、同步方式。异步方式、同步方式。异步方式、同步方式。所有串行通信都需要一个时钟信号来作为数据的定所有串行通信都需要一个时钟信号来作为数据的定时参考。发送器和接收器用时钟来决定何时发送和读时参考。发送器和接收器用时钟来决定何时发送和读取每一位数据。取每一位数据。根据采用根据采用统一时钟统一时钟还是还是本地局部时钟本地局部时钟,分为,分为同步传同步传
7、输输和和异步传输异步传输两种。两种。同步传输用一个时钟确定一个数据位。同步传输用一个时钟确定一个数据位。异步传输用多个时钟确定一个数据位。异步传输用多个时钟确定一个数据位。单片机应用技术单片机应用技术串行通信的基本概念串行通信的基本概念二、二、串行通信的两种基本工作方式串行通信的两种基本工作方式 不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平(MARK(MARK状态状态状态状态)。1、异步方式异步方式(Asynchronous)采用不同的编码方案采用不同的编码方案采用不同的编码方案采用不同的编码方案,发送字符可为发送字符
8、可为发送字符可为发送字符可为5,6,7,5,6,7,或或或或8 8位位位位;采用奇校验采用奇校验采用奇校验采用奇校验,保证保证保证保证“1”1”的个数为奇数;采用偶校验的个数为奇数;采用偶校验的个数为奇数;采用偶校验的个数为奇数;采用偶校验,保证保证保证保证 11的个数为偶数的个数为偶数的个数为偶数的个数为偶数;异步串行通信数据格式异步串行通信数据格式:单片机应用技术单片机应用技术串行通信的基本概念串行通信的基本概念二、二、串行通信的两种基本工作方式串行通信的两种基本工作方式1、异步方式异步方式(Asynchronous)例例:发送一个由发送一个由8位数据位构成的字符位数据位构成的字符45H,
9、奇校,奇校 验、验、1位停止位。位停止位。停止位可以是停止位可以是停止位可以是停止位可以是1,1.51,1.5或或或或2 2位。位。位。位。异步传输先发送低位异步传输先发送低位(LSB)单片机应用技术单片机应用技术异步传输的时钟定时方法异步传输的时钟定时方法:数据数据(61H)100011停停止止位位发送方利用内部时钟来决定什么时候发送每个位发送方利用内部时钟来决定什么时候发送每个位接收方检测开始信号的下降沿,然后利用接收方检测开始信号的下降沿,然后利用它的内部时钟从每一位的中间接收该位它的内部时钟从每一位的中间接收该位00起起始始位位LSBMSB串行通信的基本概念串行通信的基本概念单片机应用
10、技术单片机应用技术串行通信的基本概念串行通信的基本概念2、同步方式同步方式(Synchronous)格式格式格式格式:同步字符同步字符 字符字符1 字符字符2 字符字符n 校验字符校验字符数据块数据块 不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平不发送数据时,传输线呈现高电平(MARK(MARK(MARK(MARK状态状态状态状态)。同步字符可以为同步字符可以为同步字符可以为同步字符可以为1 1个或个或个或个或2 2个个个个。根据双方约定,接收方监测到同步字符后,接收被根据双方约定,接收方监测到同步字符后,接收被根据双方约定,接收方监测到同步字符后
11、,接收被根据双方约定,接收方监测到同步字符后,接收被发送的字符流;将接收到的字符转换成并行数据发送的字符流;将接收到的字符转换成并行数据发送的字符流;将接收到的字符转换成并行数据发送的字符流;将接收到的字符转换成并行数据。内同步、外同步。内同步、外同步。内同步、外同步。内同步、外同步。单片机应用技术单片机应用技术同步传输的时钟定时方法同步传输的时钟定时方法 :数据(数据(61H)1位位1100001先发送高位先发送高位(MSB)发送方在时钟信号的下降沿发送字节发送方在时钟信号的下降沿发送字节接收方在时钟信号的上升沿接收字节接收方在时钟信号的上升沿接收字节时钟时钟串行通信的基本概念串行通信的基本
12、概念0同步通信的帧格式:同步通信的帧格式:同步传输需要定义一个帧的开同步传输需要定义一个帧的开始和结束。通常用始和结束。通常用1个同步字符个同步字符(标志符标志符)来表示。来表示。单片机应用技术单片机应用技术串行通信的基本概念串行通信的基本概念三、三、串行传送速率串行传送速率在串行通信中,常用在串行通信中,常用波特率波特率来表示数据传输的速率。来表示数据传输的速率。波特率:每秒传送的二进制位数。波特率:每秒传送的二进制位数。波特率:每秒传送的二进制位数。波特率:每秒传送的二进制位数。单位:单位:单位:单位:波特波特波特波特 BdBd如串行通信规定:一个串行字符包括如串行通信规定:一个串行字符包
13、括如串行通信规定:一个串行字符包括如串行通信规定:一个串行字符包括1 1个起始位,个起始位,个起始位,个起始位,7 7个个个个数据位,数据位,数据位,数据位,1 1个奇偶校验位和个奇偶校验位和个奇偶校验位和个奇偶校验位和1 1个停止位,共个停止位,共个停止位,共个停止位,共1010个数据位个数据位个数据位个数据位构成,每秒传送构成,每秒传送构成,每秒传送构成,每秒传送120120个字符,则波特率为:个字符,则波特率为:个字符,则波特率为:个字符,则波特率为:1010位位位位/字符字符字符字符 120120字符字符字符字符/秒秒秒秒=1200=1200位位位位/秒秒秒秒 传送每一位占用的时间为:
14、传送每一位占用的时间为:传送每一位占用的时间为:传送每一位占用的时间为:1 1秒秒秒秒/1200=0.833/1200=0.833毫秒毫秒毫秒毫秒 波特率因子波特率因子:发送:发送/接收时钟与波特率之比。接收时钟与波特率之比。单片机应用技术单片机应用技术7.2 MCS-51的串行口的串行口7.2.1 串行口的结构串行口的结构7.2.2 串行口的工作方式串行口的工作方式7.2.3 波特率的计算波特率的计算返回本章首页单片机应用技术单片机应用技术MCS-51有一个可编程的全双工串行通信接口,有一个可编程的全双工串行通信接口,可作为通用异步接收可作为通用异步接收/发送器发送器(UART-Univer
15、sal Asychronous Receiver/Transmitter),也可作为同步,也可作为同步移位寄存器。其帧格式可为移位寄存器。其帧格式可为8位、位、10位、位、11位,并可位,并可设置多种不同的波特率。它通过引脚设置多种不同的波特率。它通过引脚RXD和和TXD与与外界进行通信。外界进行通信。7.2.1 串行口的结构串行口的结构单片机应用技术单片机应用技术MCS-51内部有两个物理上独立的接收、发送缓内部有两个物理上独立的接收、发送缓冲器冲器SBUF。SBUF属于特殊功能寄存器。一个用于属于特殊功能寄存器。一个用于存放接收到的数据,另一个用于存放欲发送的数据,存放接收到的数据,另一个
16、用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对,通过对SBUF的读、写指令来区别是对接收缓的读、写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。冲器还是对发送缓冲器进行操作。CPU在写在写SBUF时,时,就是修改发送缓冲器;读就是修改发送缓冲器;读SBUF,就是读接收缓冲器,就是读接收缓冲器的内容。接收或发送数据,是通过串行口对外的两的内容。接收或发送数据,是通过串行口对外的两条独立收发信号线条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,来实现的,因此可以同时发送、接收数据。串行口的结构如图因此
17、可以同时发送、接收数据。串行口的结构如图7.3所示。所示。7.2.1 串行口的结构串行口的结构单片机应用技术单片机应用技术图图7.3 串行口结构示意图串行口结构示意图7.2.1 串行口的结构串行口的结构单片机应用技术单片机应用技术7.2.1 串行口的结构串行口的结构1串行口控制寄存器串行口控制寄存器SCON图图7-6 SCON格式格式SCON位地址位地址SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98H D7D6D5 D4 D3 D2 D1 D0该寄存器的字节地址为该寄存器的字节地址为98H,可位寻址。可位寻址。SCON格格式如图式如图7-6所示。所示
18、。其各位的含义如下:其各位的含义如下:SM0、SM1串行口串行口4种工作方式的选择位。串行口种工作方式的选择位。串行口的的4种工作方式如表种工作方式如表7.1所示。所示。单片机应用技术单片机应用技术表表8.1 串行口的串行口的4种工作方式种工作方式1串行口控制寄存器串行口控制寄存器SCON单片机应用技术单片机应用技术SM2多机通信控制位,用于方式多机通信控制位,用于方式2或方式或方式3中。中。1串行口控制寄存器串行口控制寄存器SCON当串行口以方式当串行口以方式2或方式或方式3接收时,如果接收时,如果SM2=1,只有当接收到的第只有当接收到的第9位数据位数据(RB8)为为“1”时,才将接收时,
19、才将接收到的前到的前8位数据送入位数据送入SBUF,并将,并将RI置置“1”,产生中断,产生中断请求;当接收到的第请求;当接收到的第9位数据位数据(RB8)为为“0”时,则将接时,则将接收到的前收到的前8位数据丢弃。如果位数据丢弃。如果SM2=0,则不论第,则不论第9位数位数据是据是“1”还是还是“0”,都将前,都将前8位数据送入位数据送入SBUF中,中,并将并将RI置置“1”,产生中断请求。,产生中断请求。在方式在方式1时,如果时,如果SM2=1,则只有收到停止位时才,则只有收到停止位时才会激活会激活RI。在方式。在方式0时,时,SM2必须为必须为0。单片机应用技术单片机应用技术REN 允许
20、串行接收位,由软件置允许串行接收位,由软件置“1”或清或清“0”。REN=1时,允许串行口接收数据;时,允许串行口接收数据;REN=0时,禁止串行口接收数据。时,禁止串行口接收数据。1串行口控制寄存器串行口控制寄存器SCONTB8 发送的第发送的第9位数据。方式位数据。方式2和方式和方式3时,时,TB8是是要发送的第要发送的第9位数据,可作为奇偶校验位使用,位数据,可作为奇偶校验位使用,也可作为地址帧或数据帧的标志。其中,也可作为地址帧或数据帧的标志。其中,TB8=1为地址帧,为地址帧,TB8=0为数据帧。为数据帧。RB8 接收到的第接收到的第9位数据。方式位数据。方式2和方式和方式3时,时,
21、RB8存放接收到的第存放接收到的第9位数据。在方式位数据。在方式1,如果,如果SM2=0,RB8是接收到的停止位。在方式是接收到的停止位。在方式0,不使用不使用RB8。单片机应用技术单片机应用技术TI 发送中断标志位。发送中,发送中断标志位。发送中,TI必须保持零电平。必须保持零电平。方式方式0时,串行发送第时,串行发送第8位数据结束时由硬件置位数据结束时由硬件置“1”。其它工作方式,串行口发送停止位的开。其它工作方式,串行口发送停止位的开始时置始时置“1”。TI=1,表示一帧数据发送结束,表示一帧数据发送结束,可供软件查询,也可申请中断。可供软件查询,也可申请中断。CPU响应中断响应中断后,
22、在中断服务程序中向后,在中断服务程序中向SBUF写入要发送的下写入要发送的下一帧数据,一帧数据,TI必须由软件再清必须由软件再清“0”。1串行口控制寄存器串行口控制寄存器SCONRI 接收中断标志位。接收中接收中断标志位。接收中RI必须保持零电平。必须保持零电平。方式方式0时,接收完第时,接收完第8位数据时,位数据时,RI由硬件置由硬件置1。其它工作方式,串行口接收到停止位时,该位其它工作方式,串行口接收到停止位时,该位置置“1”。RI=1,表示一帧数据接收完毕,并申,表示一帧数据接收完毕,并申请中断请中断,要求要求CPU从接收从接收SBUF取走数据。该位取走数据。该位的状态也可供软件查询。如
23、果再接收,的状态也可供软件查询。如果再接收,RI必须必须由软件再清由软件再清“0”。单片机应用技术单片机应用技术2特殊功能寄存器特殊功能寄存器PCON图图7-7 PCON格式格式返回本节其其字字节节地地址址为为87H,没没有有位位寻寻址址功功能能。PCON的的格式如图格式如图7-7所示,其中与串行接口有关的只有所示,其中与串行接口有关的只有D7位。位。SMODD7D6D5D4D3D2D1D0 SMOD:波特率选择位。当:波特率选择位。当SMOD=1时,比时,比SMOD=0时的波特率加倍,因此也称时的波特率加倍,因此也称SMOD位为波特率倍增位。位为波特率倍增位。单片机应用技术单片机应用技术7.
24、2.2 串行口的工作方式串行口的工作方式串行口工作方式单片机应用技术单片机应用技术方式方式0为同步移位寄存器输入为同步移位寄存器输入/输出方式,常用于输出方式,常用于外接移位寄存器,以扩展并行外接移位寄存器,以扩展并行I/O口。口。8位数据为一帧,位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率不设起始位和停止位,先发送或接收最低位。波特率固定为固定为fosc/12。方式方式0发送发送 当当CPU执行一条将数据写入发送缓冲执行一条将数据写入发送缓冲器器SBUF的指令时,产生一个正脉冲,串行口即把的指令时,产生一个正脉冲,串行口即把SBUF中的中的8位数据以位数据以fosc/12的固
25、定波特率从的固定波特率从RXD引脚引脚串行输出,低位在先,串行输出,低位在先,TXD引脚输出同步移位脉冲,引脚输出同步移位脉冲,发送完发送完8位数据后将中断标志位位数据后将中断标志位TI置置“1”。时序如图。时序如图7.8所示。所示。7.2.2 串行口的工作方式串行口的工作方式1方式方式0单片机应用技术单片机应用技术图图7.8 方式方式0发、收时序发、收时序7.2.2 串行口的工作方式串行口的工作方式RI单片机应用技术单片机应用技术方式方式0接收接收 方式方式0接收时,接收时,REN为串行口接收允为串行口接收允许接收控制位,许接收控制位,REN=0,禁止接收。,禁止接收。方式方式0下,下,SC
26、ON中的中的TB8、RB8位没有用到,位没有用到,发送或接收完发送或接收完8位数据由硬件将位数据由硬件将TI或中断标志位或中断标志位RI置置“1”,CPU响应中断。响应中断。TI或或RI标志位须由用户标志位须由用户软件清软件清“0”,可采用如下指令:,可采用如下指令:CLR TI;TI位清位清“0”CLR RI;RI位清位清“0”方式方式0时,时,SM2位位(多机通信控制位多机通信控制位)必须为必须为0。7.2.2 串行口的工作方式串行口的工作方式单片机应用技术单片机应用技术2 方式方式17.2.2 串行口的工作方式串行口的工作方式方式方式1用于数据的串行发送和接收。用于数据的串行发送和接收。
27、TXD脚和脚和RXD脚分别用于发送和接收数据。脚分别用于发送和接收数据。方式方式1收、发一帧的数据为收、发一帧的数据为10位,位,1位起始位位起始位(0),8位数据位,位数据位,1位停止位位停止位(1),先发送或接收最低位。,先发送或接收最低位。波特率由下式确定:波特率由下式确定:方式方式1波特率波特率=(2SMOD/32)定时器定时器T1的溢出率的溢出率SMOD为为PCON寄存器的最高位的值寄存器的最高位的值(0或或1)。单片机应用技术单片机应用技术方式方式1发送发送 方式方式1输出时,数据位由输出时,数据位由TXD端输出。端输出。当当CPU执行一条数据写发送缓冲器执行一条数据写发送缓冲器S
28、BUF的指令时,的指令时,就启动发送。图就启动发送。图7.9(a)TX时钟的频率就是发送的波特时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变为有效,将起率。发送开始时,内部发送控制信号变为有效,将起始位向始位向TXD输出。此后,每经过一个输出。此后,每经过一个TX时钟周期,时钟周期,便产生一个移位脉冲,并由便产生一个移位脉冲,并由TXD输出一个数据位。输出一个数据位。8位数据位全部发送完毕后,中断标志位位数据位全部发送完毕后,中断标志位TI置置“1”。TI必须由用户清必须由用户清0,以便下一次发送。,以便下一次发送。2 方式方式17.2.2 串行口的工作方式串行口的工作方式单片机应
29、用技术单片机应用技术图图7.9 方式方式1发、收时序发、收时序(a)发送时序;发送时序;(b)接收时序接收时序单片机应用技术单片机应用技术方式方式1接收接收 接收数据的时序如图接收数据的时序如图7.9(b)所示。当所示。当CPU采样到采样到RXD端从端从1到到0的跳变时的跳变时(3次采样中至少次采样中至少2次有效次有效),开始接收数据。一帧数据接收完毕以后,开始接收数据。一帧数据接收完毕以后,必须同时满足以下两个条件,这次接收才真正有效,必须同时满足以下两个条件,这次接收才真正有效,然后然后RI自动置自动置1。(1)RI=0。(2)SM2=0或收到的停止位或收到的停止位=1。若这两个条件不满足
30、,则收到的数据不能装入若这两个条件不满足,则收到的数据不能装入SBUF,该帧数据将丢失。中断标志,该帧数据将丢失。中断标志RI必须由用户清必须由用户清0,以便下一次接收。通常情况下,串口以方式,以便下一次接收。通常情况下,串口以方式1工作工作时,时,SM2=0。2 方式方式17.2.2 串行口的工作方式串行口的工作方式单片机应用技术单片机应用技术3 方式方式27.2.2 串行口的工作方式串行口的工作方式方式方式2为为9位异步通信方式。每帧数据均为位异步通信方式。每帧数据均为11位,位,1位起始位位起始位0,8位数据位位数据位(先低位先低位),1位可程控的第位可程控的第9位数据和位数据和1位停止
31、位。位停止位。方式方式2的波特率由下式确定:的波特率由下式确定:方式方式2波特率波特率=(2SMOD/64)fosc方式方式2发送前,先根据通信协议由软件设置发送前,先根据通信协议由软件设置SCON中的中的TB8(例如,双机通信时的奇偶校验位或多机通信例如,双机通信时的奇偶校验位或多机通信时的地址时的地址/数据的标志位数据的标志位)。方式。方式2发送数据波形如图发送数据波形如图7.10所示。所示。单片机应用技术单片机应用技术图图7.10 方式方式2发送时序发送时序单片机应用技术单片机应用技术方式方式2接收接收 SM0、SM1=10,且,且REN=1。数据由。数据由RXD端输入,接收端输入,接收
32、11位信息。当位检测逻辑采样到位信息。当位检测逻辑采样到RXD引脚从引脚从1到到0的负跳变,并判断起始位有效后,的负跳变,并判断起始位有效后,便开始接收一帧信息。在接收完第便开始接收一帧信息。在接收完第9位数据后,需满位数据后,需满足以下两个条件,才能将接收到的数据送入足以下两个条件,才能将接收到的数据送入SBUF。(1)RI=0,意味着接收缓冲器为空。,意味着接收缓冲器为空。(2)SM2=0或接收到的第或接收到的第9位数据位位数据位RB8=1。3 方式方式27.2.2 串行口的工作方式串行口的工作方式当上述两个条件满足时,接收到的数据送入当上述两个条件满足时,接收到的数据送入SBUF(接收缓
33、冲器接收缓冲器),第,第9位数据送入位数据送入SCON中的中的RB8,并将并将RI置置“1”。若不满足这两个条件,则接收的信息。若不满足这两个条件,则接收的信息将被丢弃。将被丢弃。单片机应用技术单片机应用技术串行口方式串行口方式2接收数据的时序波形如图接收数据的时序波形如图7.11所示。所示。由方式由方式2的的TI,RI也必须由用户清也必须由用户清0,才能进行下,才能进行下一次的发送和接收。一次的发送和接收。3 方式方式27.2.2 串行口的工作方式串行口的工作方式图图7.11 方式方式2接收时序接收时序单片机应用技术单片机应用技术4方式方式3 当当SM0SM1=11时,串行口工作在方式时,串
34、行口工作在方式3。方式。方式3为为波特率可变的波特率可变的9位异步通信方式,除了波特率外,方式位异步通信方式,除了波特率外,方式3和方式和方式2相同。相同。方式方式3的波特率由下式确定:的波特率由下式确定:方式方式3波特率波特率=(2SMOD/32)定时器定时器T1的溢出率的溢出率 返回本节方式方式3发送和接收数据的时序波形见方式发送和接收数据的时序波形见方式2的图的图(图图7.10和图和图7.11)。单片机应用技术单片机应用技术7.2.3 波特率的计算波特率的计算表7-2 波特率计算公式单片机应用技术单片机应用技术方式方式0和方式和方式2的波特率是固定的;方式的波特率是固定的;方式1和方式和
35、方式3的波特率可由定时器的波特率可由定时器T1的溢出率来确定。的溢出率来确定。7.2.3 波特率的计算波特率的计算(1)方式方式0时时,波特率固定为时钟频率,波特率固定为时钟频率fosc的的1/12,且,且不受不受SMOD位的值的影响。若位的值的影响。若fosc=12 MHz,则波特,则波特率为率为fosc/12,即,即1 Mb/s。(2)方式方式2时时,波特率与,波特率与SMOD位的值有关。位的值有关。方式方式2波特率波特率=(2SMOD/64)fosc若若fosc=12 MHz,则当,则当SMOD=0时,波特率时,波特率=187.5 kb/s;当;当SMOD=1时,波特率时,波特率=375
36、 kb/s。单片机应用技术单片机应用技术(3)串行口工作在方式串行口工作在方式1或方式或方式3时时,常用定时器,常用定时器T1作为波特率发生器,其波特率为:作为波特率发生器,其波特率为:波特率波特率=(2SMOD/64)T1的溢出率的溢出率7.2.3 波特率的计算波特率的计算实际设定波特率时,实际设定波特率时,T1常设置为方式常设置为方式2定时定时(自自动装初值动装初值),这种方式不仅操作方便,也可避免因软,这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。件重装初值而带来的定时误差。实际使用时,经常根据已知波特率和时钟频率实际使用时,经常根据已知波特率和时钟频率来计算来计算T1的
37、初值。为避免繁杂的初值计算,常用的的初值。为避免繁杂的初值计算,常用的波特率和初值间的关系列成表波特率和初值间的关系列成表7.3,以供查用。,以供查用。单片机应用技术单片机应用技术表表7.3 定时器定时器T1产生的常用波特率产生的常用波特率7.2.3 波特率的计算波特率的计算单片机应用技术单片机应用技术表表7.3中有两点需要注意:中有两点需要注意:7.2.3 波特率的计算波特率的计算 时钟振荡频率为时钟振荡频率为12 MHz或或6 MHz时,表中初值和时,表中初值和相应的波特率之间有一定误差。相应的波特率之间有一定误差。例如,例如,FDH的对应的理论值是的对应的理论值是10416波特波特(时钟
38、时钟6 MHz),与,与9600波特相差波特相差816波特。波特。消除误差可以通过调整时钟振荡频率消除误差可以通过调整时钟振荡频率fosc来来实现。例如采用的时钟振荡频率为实现。例如采用的时钟振荡频率为11.0592 MHz。如果串行通信选用很低的波特率,例如,波特率如果串行通信选用很低的波特率,例如,波特率选为选为55,可将定时器,可将定时器T1设置为方式设置为方式1定时。但在定时。但在这种情况下,这种情况下,T1溢出时,需要在中断服务程序中溢出时,需要在中断服务程序中重新装入初值。中断响应时间和执行指令时间会重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方
39、法使波特率产生一定的误差,可用改变初值的方法加以调整。加以调整。单片机应用技术单片机应用技术例:例:若若51单片机的时钟振荡频率为单片机的时钟振荡频率为11.0592 MHz,选,选用用T1为方式为方式2定时作为波特率发生器,波特率为定时作为波特率发生器,波特率为2400 b/s,求初值。,求初值。结果可直接从表结果可直接从表7.3中查到,为中查到,为F4H。这里因时钟振荡频率选为这里因时钟振荡频率选为11.0592 MHz,计算过,计算过程中无余数,可使初值为整数,从而产生精确的波特程中无余数,可使初值为整数,从而产生精确的波特率。率。7.2.3 波特率的计算波特率的计算单片机应用技术单片机
40、应用技术4.波特率的自动检测波特率的自动检测 在分布式多波特率通信系统中,常常要求从设在分布式多波特率通信系统中,常常要求从设备在软件上能做到波特率随主设备自动调整,使系备在软件上能做到波特率随主设备自动调整,使系统适应性更强,智能化程度更高。当然,一般情况统适应性更强,智能化程度更高。当然,一般情况下,波特率自动检测的范围仅限于标准波特率。下,波特率自动检测的范围仅限于标准波特率。7.2.3 波特率的计算波特率的计算单片机应用技术单片机应用技术常用实现波特率自动检测的方法有常用实现波特率自动检测的方法有3种:种:(1)从设备启动通信程序后,逐一选择标准波特从设备启动通信程序后,逐一选择标准波
41、特率,向主设备发送某个事先约定的握手代码,直到率,向主设备发送某个事先约定的握手代码,直到收到主设备发回的确认码,即可判定通信波特率。收到主设备发回的确认码,即可判定通信波特率。(2)利用串行异步通信每一帧起始位为低电平、利用串行异步通信每一帧起始位为低电平、停止位为高电平,用定时器记录每帧长度,从而判停止位为高电平,用定时器记录每帧长度,从而判定系统通信波特率。定系统通信波特率。(3)利用主设备发送某一特殊码型,从设备收到利用主设备发送某一特殊码型,从设备收到的码值会随主设备的波特率不同而不同,当从机收的码值会随主设备的波特率不同而不同,当从机收到约定的特殊码型时,便可确认系统的通信波特率。
42、到约定的特殊码型时,便可确认系统的通信波特率。7.2.3 波特率的计算波特率的计算单片机应用技术单片机应用技术7.3 串行口的控制串行口的控制7.3.1 主从机间的通信主从机间的通信7.3.2 RS-232C串行接口标准及应用串行接口标准及应用返回本章首页单片机应用技术单片机应用技术7.3.1 主从机间的通信主从机间的通信1双机串行异步通信双机串行异步通信利用串行口可以实现两台机器间的全双工通信。利用串行口可以实现两台机器间的全双工通信。如图如图7.12所示。所示。设甲乙两台机器按全双工方式收发设甲乙两台机器按全双工方式收发ASCII码字符,码字符,数据位为数据位为8位,其中最高一位用来作奇偶
43、校验位,采位,其中最高一位用来作奇偶校验位,采用偶校验方式,要求传送的波特率为用偶校验方式,要求传送的波特率为1200 b/s。假设。假设发送缓冲区发送缓冲区OUTBUF首址为片内首址为片内RAM 60H,接收缓,接收缓冲区冲区INBUF首址为首址为RAM 70H,时钟频率,时钟频率fosc=6 MHz,试编写有关的通信程序。试编写有关的通信程序。单片机应用技术单片机应用技术图图7.12 双机通信系统双机通信系统单片机应用技术单片机应用技术1)确定通信方式确定通信方式根据系统要求,通信双方要相互约定:根据系统要求,通信双方要相互约定:7位位ASCII码加码加1位校验位共位校验位共8位数据,故可
44、采用串行口方位数据,故可采用串行口方式式1进行通信。进行通信。51单片机的奇偶校验位单片机的奇偶校验位P是当累加器是当累加器A中中“1”的个数为奇数时的个数为奇数时P=1,为偶数时,为偶数时P=0。直接把。直接把P的值放入的值放入ASCII码的最高位码的最高位(奇偶校验位奇偶校验位),即为偶,即为偶校验方式。校验方式。7.3.1 主从机间的通信主从机间的通信1双机串行异步通信双机串行异步通信单片机应用技术单片机应用技术2)计算定时器计算定时器T1的计数初值的计数初值对于串行口方式对于串行口方式1,波特率由定时器,波特率由定时器T1的溢出率和的溢出率和SMOD决定,定时器决定,定时器T1采用工作
45、方式采用工作方式2,可以避免计数,可以避免计数溢出后用软件重装定时初值。取溢出后用软件重装定时初值。取SMOD=0,按式,按式(5.4)可求得计数初值可求得计数初值X 为为7.3.1 主从机间的通信主从机间的通信1双机串行异步通信双机串行异步通信也可以通过查表也可以通过查表7.3确定确定X=F3H。单片机应用技术单片机应用技术3)确定相关寄存器参数确定相关寄存器参数(1)串行口控制寄存器串行口控制寄存器SCON。SM0、SM1=01时为方式时为方式1,在,在SM2=0和和REN=1条件下,允许接收数据,其余各位均取条件下,允许接收数据,其余各位均取0,则则SCON)=01010000B=50H
46、。(2)电源控制寄存器电源控制寄存器PCON。7.3.1 主从机间的通信主从机间的通信1双机串行异步通信双机串行异步通信 由于由于SMOD=0,因此,因此(PCON)=00H(同系统复位以同系统复位以后的状态,可不赋值后的状态,可不赋值)。单片机应用技术单片机应用技术(3)确定定时器方式寄存器确定定时器方式寄存器TMOD。3)确定相关寄存器参数确定相关寄存器参数1双机串行异步通信双机串行异步通信 由于只用由于只用T1,且为定时方式,且为定时方式2,因此,因此(TMOD)=00100000B=20H。请注意:请注意:串行通信端口的接收中断串行通信端口的接收中断RI、发送中断、发送中断TI共用一个
47、中断向量共用一个中断向量(0023H),因此,串行口中断请求,因此,串行口中断请求后,中断服务程序首先要判断是后,中断服务程序首先要判断是RI、TI当中的哪个请求当中的哪个请求中断。中断。单片机应用技术单片机应用技术4)编写有关的通信程序编写有关的通信程序 主程序:主程序:ORG 0000H LJMP MAINORG 0023H ;串行中断入口串行中断入口LJMP SINOUT 1双机串行异步通信双机串行异步通信单片机应用技术单片机应用技术ORG 0030H MAIN:MOV TMOD,20H ;定时器;定时器T1设为方式设为方式2 MOV TL1,0F3H ;装入定时器初值;装入定时器初值M
48、OV TH1,0F3H ;8位重装值位重装值SETB TR1 ;启动定时器启动定时器T1MOV SCON,50H ;串行口设为方串行口设为方MOV R0,60H ;OUTBUF首址首址MOV R1,70H ;INBUF首址首址SETB EA ;开中断开中断 SETB ES ;允许串行口中断允许串行口中断 LCALL SOUT ;先发送先发送1个字符个字符 LJMP$;等待中断等待中断 4)编写有关的通信程序编写有关的通信程序1双机串行异步通信双机串行异步通信单片机应用技术单片机应用技术 ;中断服务程序中断服务程序SINOUT:JNB RI,SEND ;若不是接收,则转向;若不是接收,则转向;发
49、送发送 LCALL SIN ;若是接收,则调用接若是接收,则调用接;收子程序收子程序RETI ;中断返回中断返回SEND:LCALL SOUT ;若是发送,则调用发若是发送,则调用发;送子程序送子程序 RETI ;中断返回中断返回 ;发送子程序发送子程序 4)编写有关的通信程序编写有关的通信程序1双机串行异步通信双机串行异步通信单片机应用技术单片机应用技术;发送子程序发送子程序 SOUT:MOV A,R0 ;取发送数据到取发送数据到A MOV C,P ;偶校验位赋予偶校验位赋予C MOV ACC.7,C ;送入送入ASCII码最高码最高;位中;位中 INC R0 ;修改发送数据指针修改发送数据
50、指针 MOV SBUF,A ;发送数据发送数据 CLR TI ;清发送中断标志清发送中断标志 RET ;子程序返回子程序返回 4)编写有关的通信程序编写有关的通信程序1双机串行异步通信双机串行异步通信单片机应用技术单片机应用技术 ;接收子程序接收子程序SIN:MOV A,SUBF ;读入接收缓冲区内容读入接收缓冲区内容 JNB P,EXIT ;若若P=0,则接收正确,则接收正确 ERROR:;若若P=1,则接收错误,则接收错误 ;出错处理出错处理EXIT:ANL A,7FH ;删去校验位删去校验位 MOV R1,A ;存入接收缓冲区存入接收缓冲区 INC R1 ;修改接收缓冲区指针修改接收缓冲