版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.7 串行接口串行接口计算机通信计算机通信是将计算机技术和通信技术的相结合,完成计算机是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换与外部设备或计算机与计算机之间的信息交换 。可以分为两。可以分为两大类:大类:并行通信与串行通信并行通信与串行通信。并行通信并行通信是将数据字节的各位用多条数据线同时进行传送送。是将数据字节的各位用多条数据线同时进行传送送。并行通信并行通信控制简单、传输速度快;由于传输线较多,长距控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。离传送时成本高且接收方的各位同时接收存在困难。串行通信串行
2、通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点串行通信的特点:传输线少,长距离传送时:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。但数据的传送控制比并行通信复杂。 串行通信的基本概念串行通信的基本概念 一、异步通信与同步通信一、异步通信与同步通信1、异步通信、异步通信 异步通信异步通信是指通信的是指通信的发送与接收设备使用各自的时钟发送与接收设备使用各自的时钟控控制数据的发送和接收过程。为使双方的收发协调,要求发制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽
3、可能一致。送和接收设备的时钟尽可能一致。 异步通信是异步通信是以字符(构成的帧)为以字符(构成的帧)为单位进行传输单位进行传输,字符与字符之间的间,字符与字符之间的间隙(时间间隔)是任意的,但每个字隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,符中的各位是以固定的时间传送的,即即字符之间是异步的字符之间是异步的(字符之间不一(字符之间不一定有定有“位间隔位间隔”的整数倍的关系),的整数倍的关系),但但同一字符内的各位是同步的同一字符内的各位是同步的(各位(各位之间的距离均为之间的距离均为“位间隔位间隔”的整数的整数倍)。倍)。异步通信的数据格式异步通信的数据格式 :异步通信的
4、特点异步通信的特点:不要求收发双方时钟的:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但严格一致,实现容易,设备开销较小,但每个字符要附加每个字符要附加23位用于起止位,各帧位用于起止位,各帧之间还有间隔,因此传输效率不高。之间还有间隔,因此传输效率不高。2、同步通信、同步通信同步通信时要建立发送方时钟对接收方时钟的直接控制,同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均使双方达到完全同步。此时,传输数据的位之间的距离均为为“位间隔位间隔”的整数倍,同时传送的字符间不留间隙,即的整数倍,同时传送的字符间不留间隙,即保持位同步保持位
5、同步关系,关系,也保持字符同步也保持字符同步关系。发送方对接收方关系。发送方对接收方的同步可以通过两种方法实现。的同步可以通过两种方法实现。 外同步外同步 自同步自同步二、串行通信的传输方向二、串行通信的传输方向1、单工、单工单工单工是指数据传输仅能沿是指数据传输仅能沿一个方向一个方向,不能实现反向传输。,不能实现反向传输。2、半双工、半双工半双工半双工是指数据传输可以沿是指数据传输可以沿两个方向两个方向,但需要分时进行。,但需要分时进行。3、全双工、全双工全双工全双工是指数据可以是指数据可以同时进行双向同时进行双向传输。传输。 单工 半双工半双工 全双工全双工三、信号的调制与解调三、信号的调
6、制与解调 利用调制器(利用调制器(Modulator)把数字信号转换成模把数字信号转换成模拟信号拟信号,然后送到通信线路上去,再由解调器,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的)把从通信线路上收到的模拟信号模拟信号转换成数字信号转换成数字信号。由于通信是双向的,调制器和。由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器解调器合并在一个装置中,这就是调制解调器MODEM。四、传输速率与传输距离四、传输速率与传输距离 1、传输速率、传输速率比特率比特率是是每秒钟传输二进制代码的位数每秒钟传输二进制代码的位数,单位是:,单位是:位秒(位秒(b
7、ps)。如每秒钟传送)。如每秒钟传送240个字符,而每个个字符,而每个字符格式包含字符格式包含10位位(1个起始位、个起始位、1个停止位、个停止位、8个数据个数据位位),这时的比特率为:,这时的比特率为: 10位位240个个/秒秒 = 2400 bps波特率波特率表示表示每秒钟调制信号变化的次数每秒钟调制信号变化的次数,单位是:,单位是:波特(波特(Baud)。)。 波特率和比特率不总是相同的,波特率和比特率不总是相同的,对于将数字信号对于将数字信号1或或0直接用两种不同电压表示的所谓基带传输,比特直接用两种不同电压表示的所谓基带传输,比特率和波特率是相同的。率和波特率是相同的。所以,我们也经
8、常用波特率所以,我们也经常用波特率表示数据的传输速率。表示数据的传输速率。2、传输距离与传输速率的关系、传输距离与传输速率的关系 串行接口或终端直接传送串行信息位流的串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有最大距离与传输速率及传输线的电气特性有关。当传输线使用每关。当传输线使用每0.3m(约(约1英尺)有英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如时,最大传输距离迅速下降,如9600 bps 时时最大距离
9、下降到只有最大距离下降到只有76m(约(约250英尺)。英尺)。串行通信的过程:串行通信的过程: 并行数据并行数据串行数据串行数据传输通道传输通道 发送发送 串行数据串行数据并行数据并行数据 接收接收4、单片机通信的结构、单片机通信的结构 过程特性规定了信号之间的时序关系,以便正过程特性规定了信号之间的时序关系,以便正确地接收和发送数据确地接收和发送数据 。远程通信连接远程通信连接 近程通信连接近程通信连接 2.7.1 串行接口的组成和特性串行接口的组成和特性一、一、MCS-51串行接口的组成和特性串行接口的组成和特性 MCS-51的串行接口是一个全双工的异步串行通信接口,的串行接口是一个全双
10、工的异步串行通信接口,可以同时进行发送和接收数据。可以同时进行发送和接收数据。 串行接口内部有:串行接口内部有: 数据接收缓冲器和数据发送缓冲器数据接收缓冲器和数据发送缓冲器接收缓冲器只能读出数据不能写入;接收缓冲器只能读出数据不能写入; 发送缓冲器只能写入数据不能读出;发送缓冲器只能写入数据不能读出;这两个缓冲器都用符号这两个缓冲器都用符号SBUF来表示,地址都是来表示,地址都是99H。SBUF是两个独立的缓冲器:是两个独立的缓冲器: CPU对对SBUF进行写操作,就是将数据写入发送缓冲器。进行写操作,就是将数据写入发送缓冲器。 CPU对对SBUF进行读操作,就是读出数据缓冲器的数据。进行读
11、操作,就是读出数据缓冲器的数据。二、与串行接口有关的特殊功能寄存器二、与串行接口有关的特殊功能寄存器 (SCON、PCON 、T1) 1、串行接口控制寄存器、串行接口控制寄存器SCON: (地址(地址98H,具有位寻址功能),具有位寻址功能)SCON SCON 是一个特殊功能寄存器,用以设定串行口的工是一个特殊功能寄存器,用以设定串行口的工作方式、接收作方式、接收/ /发送控制以及设置状态标志:发送控制以及设置状态标志:位地址:位地址: 9F 9E 9D 9C 9B 9A 99 98 SM0 SM0和和SM1SM1为工作方式选择位,可选择四种为工作方式选择位,可选择四种工作方式:工作方式: S
12、M2,多机通信控制位,多机通信控制位,主要用于方式,主要用于方式2和方式和方式3。当当接收机的接收机的SM2=1时可以利用收到的时可以利用收到的RB8来控制是否来控制是否激活激活RI(RB80时不激活时不激活RI,收到的信息丢弃;,收到的信息丢弃;RB81时收到的数据进入时收到的数据进入SBUF,并激活,并激活RI,进而在,进而在中断服务中将数据从中断服务中将数据从SBUF读走)。读走)。当当SM2=0时,不时,不论收到的论收到的RB8为为0和和1,均可以使收到的数据进入,均可以使收到的数据进入SBUF,并激活并激活RI(即此时(即此时RB8不具有控制不具有控制RI激活的功能)。激活的功能)。
13、通过控制通过控制SM2,可以实现多机通信。,可以实现多机通信。在方式在方式0时,时,SM2必须是必须是0。在方式。在方式1时,若时,若SM2=1,则只有接收到有效停止位时,则只有接收到有效停止位时,RI才置才置1。REN,允许串行接收位,允许串行接收位。由软件置。由软件置REN=1,则启动,则启动串行口接收数据;若软件置串行口接收数据;若软件置REN=0,则禁止接收。,则禁止接收。TB8,在方式,在方式2或方式或方式3中,是发送数据的中,是发送数据的第九位第九位,可以用软件规定其作用。可以用作,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为数据的奇偶校验位,或在多机通信中
14、,作为地址帧地址帧/数据帧的标志位。数据帧的标志位。在方式在方式0和方式和方式1中,该位未用。中,该位未用。RB8,在方式,在方式2或方式或方式3中,是接收到数据中,是接收到数据的第九位的第九位,作为奇偶校验位或地址帧,作为奇偶校验位或地址帧/数据帧数据帧的标志位。在方式的标志位。在方式1时,若时,若SM2=0,则,则RB8是是接收到的停止位。接收到的停止位。TI,发送中断标志位,发送中断标志位。在方式。在方式0时,当串时,当串行发送第行发送第8位数据结束时,或在其它方式,位数据结束时,或在其它方式,发送串行数据停止位的开始时,由内部硬件发送串行数据停止位的开始时,由内部硬件使使TI1,向,向
15、CPU发中断申请。在中断服务发中断申请。在中断服务程序中,必须用软件将其清程序中,必须用软件将其清0,取消此中断,取消此中断申请。申请。RI,接收中断标志位,接收中断标志位。在方式。在方式0时,当串时,当串行接收第行接收第8位数据结束时,或在其它方式,位数据结束时,或在其它方式,接收到串行数据停止位的中间时,由内部硬接收到串行数据停止位的中间时,由内部硬件使件使RI1,向,向CPU发中断申请。也必须在发中断申请。也必须在中断服务程序中,用软件将其清中断服务程序中,用软件将其清0,取消此,取消此中断申请。中断申请。三、特殊功能寄存器三、特殊功能寄存器 PCONSMODSMOD(PCON.7PCO
16、N.7):): 波特率倍增位波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、方式、方式3 3时,波特率与时,波特率与SMODSMOD有有关,当关,当SMOD=1SMOD=1时,波特率提高一倍。时,波特率提高一倍。 SMOD=0SMOD=0时,波时,波特率不加倍。复位时,特率不加倍。复位时,SMOD=0SMOD=0。PCON PCON 中只有一位中只有一位 SMOD SMOD 与串行口工作有关与串行口工作有关 :2.7.2 2.7.2 串行口的工作方式串行口的工作方式由由SCON的的sm0、sm1位确定串行接口的工作方式位确定串行接口的工作方式一、方式一、方式0方式方式0时,串行
17、口为时,串行口为同步移位寄存器的输入输出同步移位寄存器的输入输出方方式。主要用于扩展并行输入或输出口。式。主要用于扩展并行输入或输出口。RXD(P3.0)引脚输入或输出数据;)引脚输入或输出数据; TXD(P3.1)引脚输出同步移位脉冲。)引脚输出同步移位脉冲。发送和接收均为发送和接收均为8位数据,低位在先,高位在后。位数据,低位在先,高位在后。波特率固定为波特率固定为fosc/12。 1、方式、方式0输出:输出:外接外接串入串入并出并出移位寄存器移位寄存器74LS164输出,电路连输出,电路连接如图接如图2-20a2、方式、方式0输入输入外接外接并入并入串出串出移位寄存器移位寄存器74LS1
18、6574LS165输入,电路输入,电路连接如图连接如图2-20b2-20b 2-20a 方式方式0输出输出 2-20b 方式方式0输入输入例:串行接口外接两个例:串行接口外接两个74LS164,74LS164的输的输出接发光二极管,欲使出接发光二极管,欲使dod3、d8、d10、d12、d14灯亮,其余暗。电路如图示。灯亮,其余暗。电路如图示。SRG8RC1/-&1D1324561081112913U274LS164SRG8RC1/-&1D1324561081112913U374LS164D1D2D3D4LED-YELLOWD5LED-YELLOWD6LED-YELLOWD7L
19、ED-YELLOWD8LED-YELLOWD9D10D11D12LED-YELLOWD13LED-YELLOWD14LED-YELLOWD15LED-YELLOWD16LED-YELLOWR1110RR2110RR3110RR4110RR5110RR6110RR7110RR8110RR9110RR10110RR11110RR12110RR13110RR14110RR15110RR16110RTXD(p3.1)RXD(p3.0)程序清单如下:程序清单如下: ORG 0030H LLL: MOV SBUF, #0FH ;d0d3亮数据亮数据 JNB TI , $ ;判断发中断标志判断发中断标志 C
20、LR TI ;请中断标志,准备下一次请中断标志,准备下一次MOV SUBF, #55H ;输出输出d8、d9、d10 ;d12、d14亮数据亮数据 JNB TI, $ CLR TI RET 二、方式二、方式1 方式方式1是是10位数据的异步通信口。位数据的异步通信口。TXD为数据发送为数据发送引脚,引脚,RXD为数据接收引脚,传送一帧数据的格式为数据接收引脚,传送一帧数据的格式如图所示。其中如图所示。其中1位起始位,位起始位,8位数据位,位数据位,1位停止位。位停止位。 1、方式、方式1输出输出 2、方式、方式1输入输入 用软件置用软件置REN=1时,接收器以所选择波特率的时,接收器以所选择波
21、特率的16倍倍速率采样速率采样RXD引脚电平,检测到引脚电平,检测到RXD引脚输入电平发引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。入移位寄存器最左边时,控制电路进行最后一次移位。当当RI=0,且,且SM2=0(或接收到的停止位为(或接收到的停止位为1)时,将)时,将接收到的接收到的9位数据的前位数据的前
22、8位数据装入接收位数据装入接收SBUF,第,第9位位(停止位)进入(停止位)进入RB8,并置,并置RI=1,向,向CPU请求中断。请求中断。 三、方式三、方式2和方式和方式3 方式方式2或方式或方式3时为时为11位数据的异步通信口。位数据的异步通信口。TXD为数据发送引脚,为数据发送引脚,RXD为数据接收引脚为数据接收引脚 。 方式方式2和方式和方式3时起始位时起始位1位,数据位,数据9位(含位(含1位附加位附加的第的第9位,发送时为位,发送时为SCON中的中的TB8,接收时为,接收时为RB8,停止位停止位1位,一帧数据为位,一帧数据为11位。方式位。方式2的波特率固定为的波特率固定为晶振频率
23、的晶振频率的1/64或或1/32,方式,方式3的波特率由定时器的波特率由定时器T1的的溢出率决定。溢出率决定。 1、方式、方式2和方式和方式3输出输出发送开始时,先把起始位发送开始时,先把起始位0输出到输出到TXD引脚,然后发送引脚,然后发送移位寄存器的输出位(移位寄存器的输出位(D0)到)到TXD引脚。每一个移位引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位引脚输出。第一次移位时,停止位“1”移入输出移位移入输出移位寄存器的第寄存器的第9位上位上 ,以后每次移位,左边都移入,以后每次移位,左边都移入0。
24、当。当停止位移至输出位时,左边其余位全为停止位移至输出位时,左边其余位全为0,检测电路检,检测电路检测到这一条件时,使控制电路进行最后一次移位,并测到这一条件时,使控制电路进行最后一次移位,并置置TI=1,向,向CPU请求中断。请求中断。 2、方式、方式2和方式和方式3输入输入 接收时,数据从右边移入输入移位寄存器,在起始接收时,数据从右边移入输入移位寄存器,在起始位位0移到最左边时,控制电路进行最后一次移位。当移到最左边时,控制电路进行最后一次移位。当RI=0,且,且SM2=0(或接收到的第(或接收到的第9位数据为位数据为1)时,)时,接收到的数据装入接收缓冲器接收到的数据装入接收缓冲器SB
25、UF和和RB8(接收数(接收数据的第据的第9位),置位),置RI=1,向,向CPU请求中断。如果条件请求中断。如果条件不满足,则数据丢失,且不置位不满足,则数据丢失,且不置位RI,继续搜索,继续搜索RXD引脚的负跳变。引脚的负跳变。四、波特率的计算四、波特率的计算 在串行通信中,收发双方对发送或接收数据的速在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式种工作方式,其中方式0和方式和方式2的波特率是固定的,的波特率是固定的,而方式而方式1和方式和方式3的波特率是可变的,由定时器的波特率是可变的
26、,由定时器T1的溢出率来决定。的溢出率来决定。 串行口的四种工作方式对应串行口的四种工作方式对应三种波特率三种波特率。由于输。由于输入的移位时钟的来源不同,所以,各种方式的波特入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。率计算公式也不相同。方式方式0的波特率的波特率 = fosc/12方式方式2的波特率的波特率 =(2SMOD/64)*fosc 方式方式1的波特率的波特率 =(2SMOD/32)*(T1溢出率溢出率)* fosc /12方式方式3的波特率的波特率 =(2SMOD/32)*(T1溢出率溢出率) * fosc /12 当当T1T1作为波特率发生器时,最典型的用法
27、是使作为波特率发生器时,最典型的用法是使T1T1工作在自动再装入的工作在自动再装入的8 8位定时器方式(即方式位定时器方式(即方式2 2,且,且TCONTCON的的TR1=1TR1=1,以启动定时器)。这时溢出率取决,以启动定时器)。这时溢出率取决于于TH1TH1中的计数值。中的计数值。根据:根据:波特率波特率 =(2SMOD/32)*(T1溢出率溢出率)* fosc /12T1T1溢出率溢出率波特率波特率32/232/2SMOD SMOD * fosc /12 溢出周期溢出率溢出周期溢出率 定时器初值定时器初值N N 256-256-溢出周期溢出周期 波特率波特率 = 2SMOD fosc
28、/ 32 12 (2n-N) N = 2n 2SMOD fosc / 32 12 波特率波特率 N = 2n 2SMOD / 32 波特率波特率机器周期机器周期 在单片机的应用中,常用的晶振频率为:在单片机的应用中,常用的晶振频率为:12MHz12MHz和和11.0592MHz11.0592MHz。所以,选用的波特率也相对固定。所以,选用的波特率也相对固定。例:要求波特率例:要求波特率12001200B,B,时间常数为:时间常数为:、 fosc12MHz,一个机器为一个机器为us,SMOD=0,TH1的初值为:的初值为: 溢出率溢出率12003238400 *1us 溢出周期溢出周期 1/38
29、400=0.000026=26us TH1的初值的初值25626 = 230 = E6H N = 2820*12*106/32*12*1200 = 25626.041 = 236 = E6H2、 fosc 11.0592MHz11.0592MHz ,一个机器为一个机器为0.9216us, SMOD=0,TH1的初值为:的初值为: 溢出率溢出率12003238400 *0.9216us =35389溢出周期溢出周期 1/35389=0.00002826=28us TH1的初值的初值256-28=228=0E8H 常用的串行口波特率以及各参数的关系如表所示。常用的串行口波特率以及各参数的关系如表所
30、示。 串行口工作之前,应对其进行初始化,主串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器要是设置产生波特率的定时器1、串行口控制、串行口控制和中断控制。具体步骤如下:和中断控制。具体步骤如下:确定确定T1的工作方式的工作方式(编程(编程TMOD寄存器);寄存器);计算计算T1的初值的初值,装载,装载TH1、TL1;启动启动T1(编程(编程TCON中的中的TR1位);位);确定串行口控制确定串行口控制(编程(编程SCON寄存器);寄存器);串行口在中断方式工作时,要进行中断设置串行口在中断方式工作时,要进行中断设置(编程(编程IE、IP寄存器)。寄存器)。2.7.3 单片机串行口
31、应用举例单片机串行口应用举例 在计算机分布式测控系统中,经常要在计算机分布式测控系统中,经常要利用串行通信方式进行数据传输。利用串行通信方式进行数据传输。80C51单片机的串行口为计算机间的通信提供了单片机的串行口为计算机间的通信提供了极为便利的条件。利用单片机的串行口还极为便利的条件。利用单片机的串行口还可以方便地扩展键盘和显示器,对于简单可以方便地扩展键盘和显示器,对于简单的应用非常便利。这里仅介绍单片机串行的应用非常便利。这里仅介绍单片机串行口在通信方面的应用,关于键盘和显示器口在通信方面的应用,关于键盘和显示器的扩展将在下一章介绍。的扩展将在下一章介绍。例例1、设内部、设内部RAM 5
32、0h5fh 中的数据从串行接口中的数据从串行接口输出,串行接口以方式输出,串行接口以方式2工作,工作,TB8作奇偶校验位。作奇偶校验位。在数据写入发送缓冲器之前要将数据的奇偶位写在数据写入发送缓冲器之前要将数据的奇偶位写入入TB8。程序如下:程序如下: LOOP0:MOV SCON,#80H ;串行口方式串行口方式2 MOV PCON,#80H ;设波特率为设波特率为fosc/32 MOV R0,#50H ;地址地址50h单元内容单元内容R0 MOV R7,#10H ;数据长度为数据长度为10h LOOP1:MOV A,R0 ;数据送数据送A MOV C,P ;奇偶位送奇偶位送PSW.0送送C
33、 MOV TB8,C ;奇偶位送奇偶位送TB8 MOV SBUF,A ;数据送数据送SBUF,启动发送,启动发送 WAIT:JBC TI,LOOP2 ;判断发送中断标志是否为判断发送中断标志是否为1SJMP WAIT ;等待等待TI=1 LOOP2:INC R0 ;指向下一个数据指向下一个数据 DJNZ R7,LOOP1 ; 数据未发完继续数据未发完继续RET例例2 2、设串行接口选择工作方式、设串行接口选择工作方式3 3。波特率为。波特率为24002400,晶振为晶振为11.0592MHz11.0592MHz,定时器,定时器T1T1选为工作方式选为工作方式2 2,当,当SMOD=0SMOD=
34、0时,计算得到时间常数为时,计算得到时间常数为F4HF4H。程序如下:程序如下: RECEIV:MOV TMOD,#20H ;设置设置T1为方式为方式2 MOV TH1,#0F4H MOV TL1,#0F4H SETB TR1 ;启动启动T1 MOV R0,#50H ;地址指地址指R0置初值置初值 MOV R7,#10H ;数据长度送数据长度送R7 MOV SCON,#0D0H ;设串行口方式设串行口方式3接收接收MOV PCON,#00H ;设设SMOD=0 WAIT:JBC RI,LOOP1 SJMP WAIT ;等待接收中断等待接收中断 LOOP1:MOV A,SBUF ;接收到的数据送
35、接收到的数据送A JNB PSW.0,LOOP2 ;P=0,为偶数转为偶数转 JNB RB8,LOOP3 ; P=1, RB8=0转出错转出错 SJMP LOOP4 ; P=RB8=1正确接收数据正确接收数据 LOOP2: JB RB8, LOOP3 ; P=0,RB8=1转转出错出错 ; P=0,RB8=0正确收数据正确收数据LOOP4: MOV R0, A ;接收到的数据送接收到的数据送50H INC R0 ;指向下一存数地址指向下一存数地址 DJNZ R7,WAIT ;数据未接收完继续数据未接收完继续 CLR PSW.5 ;正确接收完正确接收完16位数据位数据(F0 )=0 RETLOO
36、P3:SETB PSW.5 ;奇偶校验出错置奇偶校验出错置F0=1 RET2.7.4 2.7.4 单片机与单片机的通信单片机与单片机的通信 一、点对点的通信一、点对点的通信 1 1、硬件连接、硬件连接 1162 5 V16 V1 F16 V1 F1 F16 V341 F16 V51411 5 V400 kT17 5 V400 kT210TTL/CMOSP3.112135 kEIAEIAR161 F16 VP3.0TTL/CMOS89R25 k15MAX232TXDRXDMCS- 51PC COM1口MAX232电平转换芯片内部结构及应用电平转换芯片内部结构及应用发送流程图发送流程图二、二、应用
37、应用程序程序接收流程图接收流程图设设1 1号机是发送方,号机是发送方,2 2号机是接收方。号机是接收方。当当1 1号机发送时号机发送时,先发送一个先发送一个“E1”E1”联络信号,联络信号,2 2号机收到后回答一个号机收到后回答一个“E2”E2”应答信号,表示同意接收。当应答信号,表示同意接收。当1 1号机收到应答信号机收到应答信号号“E2”E2”后,开始发送数据,每发送一个数据字节都后,开始发送数据,每发送一个数据字节都要计算要计算“校验和校验和”,假定数据块长度为,假定数据块长度为1616个字节,起个字节,起始地址为始地址为40H40H,一个数据块发送完毕后立即发送,一个数据块发送完毕后立
38、即发送“校验校验和和”。 2 2号机接收数据号机接收数据并转存到数据缓冲区,起始并转存到数据缓冲区,起始地址也为地址也为40H40H,每接收到一个数据字节便计算一次,每接收到一个数据字节便计算一次“校校验和验和”,当收到一个数据块后,再接收,当收到一个数据块后,再接收1 1号机发来的号机发来的“校验和校验和”,并将它与,并将它与2 2号机求出的校验和进行比较。号机求出的校验和进行比较。若两者相等,说明接收正确,若两者相等,说明接收正确,2 2号机回答号机回答00H00H;若两者;若两者不相等,说明接收不正确,不相等,说明接收不正确,2 2号机回答号机回答0FFH0FFH,请求重发。,请求重发。
39、1 1号机接到号机接到00H00H后结束发送后结束发送。若收到的答复非零,则。若收到的答复非零,则重新发送数据一次。双方约定采用重新发送数据一次。双方约定采用串行口方式串行口方式1 1进进行通信,行通信,一帧信息为一帧信息为1010位,其中有位,其中有1 1个起始位、个起始位、8 8个个数据位和一个停止位;波特率为数据位和一个停止位;波特率为24002400波特,波特,T1T1工作工作在定时器方式在定时器方式2 2,振荡频率选用,振荡频率选用11.0592MHZ11.0592MHZ,查表,查表可得可得TH1=TL1=0F4HTH1=TL1=0F4H,PCONPCON寄存器的寄存器的SMODSM
40、OD位为位为0 0。 发送程序清单如下:发送程序清单如下: ASTART:CLR EA MOV TMOD,#20H ;定时器定时器1置为方式置为方式2 MOV TH1,#0F4H ;装载定时器初值,装载定时器初值, MOV TL1,#0F4H ;波特率波特率2400 MOV PCON,#00H SETB TR1 ;启动定时器启动定时器MOV SCON,#50H ;设定串口方式设定串口方式1,且准,且准 ;备接收应答信号备接收应答信号 ALOOP1:MOV SBUF,#0E1H ;发联络信号发联络信号 JNB TI,$ ;等待一帧发送完毕等待一帧发送完毕 CLR TI ;允许再发送允许再发送 J
41、NB RI,$ ;等待等待2号机的应答信号号机的应答信号 CLR RI ;允许再接收允许再接收 MOV A,SBUF ;2号机应答后,读至号机应答后,读至A XRL A,#0E2H ;判断判断2号机是否准备完毕号机是否准备完毕 JNZ ALOOP1 ;2号机未准备好,继续联络号机未准备好,继续联络 ALOOP2:MOV R0,#40H ;2号机准备好,设号机准备好,设 ;定数据块地址指针初值定数据块地址指针初值MOV R7,#10H ;设定数据块长度初值设定数据块长度初值 MOV R6,#00H ;清校验和单元清校验和单元ALOOP3:MOV SBUF,R0 ;发送一个数据字节发送一个数据字节
42、 MOV A,R6 ADD A,R0 ;求校验和求校验和 MOV R6,A ;保存校验和保存校验和 INC R0 JNB TI,$ CLR TI DJNZ R7,ALOOP3 ;整个数据块是否发送完毕整个数据块是否发送完毕MOV SBUF,R6 ;发送校验和发送校验和 JNB TI,$ CLR TI JNB RI,$ ;等待等待2号机的应答信号号机的应答信号 CLR RI MOV A,SBUF ;2号机应答,读至号机应答,读至A JNZ ALOOP2 ;A2号机应答号机应答“错误错误”,转转 ;重新发送重新发送 RET ;2号机应答号机应答“正确正确”,结,结束束接收程序清单如下:接收程序清单
43、如下: BSTART: MOV TMOD,#20H ;TI方式方式 MOV TH1,#0F4H ;初值初值=F4,波特率波特率=2400 MOV TL1,#0F4H MOV PCON,#00H SETB TR1 ;启动启动TI定时定时 MOV SCON,#50H ;设定串口方式设定串口方式1,REN=1 ;且准备接收且准备接收 BLOOP1:JNB RI,$ ;等待等待1号机的联络信号号机的联络信号 CLR RI MOV A,SBUF ;收到收到1号机信号号机信号 XRL A,#0E1H ;判是否为判是否为1号机联络信号号机联络信号 JNZ BLOOP1 ;不是不是1号机联络信号,再等待号机联
44、络信号,再等待 MOV SBUF,#0E2H ;是是1号机联络信号,号机联络信号, ;发应答信号发应答信号 JNB TI,$ CLR TI MOV R0,#40H ;设定数据块地址指针初值设定数据块地址指针初值 MOV R7,#10H ;设定数据块长度初值设定数据块长度初值 MOV R6,#00H ;清校验和单元清校验和单元BLOOP2:JNB RI,$ ;等待接收数据等待接收数据 CLR RI MOV A,SBUF MOV R0,A ;接收数据转存接收数据转存 INC R0 ;存储地址加存储地址加 ADD A,R6 ;求校验和求校验和 MOV R6,A DJNZ R7,BLOOP2 ;数据未
45、接收完继续数据未接收完继续JNB RI,$ ;完毕,接收完毕,接收1号机发来的校验和号机发来的校验和 CLR RI MOV A,SBUF XRL A,R6 ;比较校验和比较校验和 JZ END1 ;校验和相等,跳至发正确标志校验和相等,跳至发正确标志 MOV SBUF,#0FFH ;校验和不相等,发错误校验和不相等,发错误 ;标志标志 JNB TI,$ ;转重新接收转重新接收 CLR TIEND1: MOV SBUF,#00H RET双机通信双机通信S-N图图 ORG0000H LJMP START ORG 0023H ;串行中断入口地址串行中断入口地址 AJMP ZD ORG 0030HST
46、ART: MOV R7, #0FFH MOV SCON, #50H;串行方式,允许接收串行方式,允许接收 MOV TMOD, #20H ;T1方式方式 MOV TH1, #0F3H ;波特率波特率=2400B MOV TL1, #0F3H ;fosc=12MHz SETB TR1 SETB EA SETB ES 双机通信(双工通信)双机通信(双工通信)Q003B: MOV A, R7 XRL A, P1 ;P1口数据有无变化口数据有无变化JZ Q003B ;无变化不发送无变化不发送MOV R7, P1 ;有变化保存有变化保存P1口数据口数据中断中断MOV SBUF, R7 ;发送发送P1口数据
47、口数据RI=1SJMP Q003B ;等待数据发送完毕等待数据发送完毕,中断中断ZD: MOV C, RI JNC ZD1 ;是发送中断转,清是发送中断转,清TI标志标志MOV A, SBUF ;是接收中断,接收数据是接收中断,接收数据MOV P2, A ;显示接收数据显示接收数据CLR RI ;清清RI中断标志中断标志RETI ;中断返回中断返回ZD1: CLR TI ;清清TI中断标志中断标志RETI ;中断返回中断返回RETEND1、硬件连接、硬件连接 80C51单片机的串行口方式单片机的串行口方式2和方式和方式3可用于多机通信。可用于多机通信。多机通信系统常采用一台主机和多台从机的多机
48、通信系统常采用一台主机和多台从机的总线型主从总线型主从式结构式结构,如图示。主机和从机之间能实现全双工通信,如图示。主机和从机之间能实现全双工通信,而各从机之间不能直接通信,只能经过主机才能实现。而各从机之间不能直接通信,只能经过主机才能实现。主机与各从机之间还需进行相应的电平转换,有时还要主机与各从机之间还需进行相应的电平转换,有时还要对信号进行光电隔离。对信号进行光电隔离。二、多机通信二、多机通信多机通信要求主机与从机之间必须协调配合。主机多机通信要求主机与从机之间必须协调配合。主机向从机发送地址帧和数据帧要有相应的标志加以区向从机发送地址帧和数据帧要有相应的标志加以区分,以便让从机识别。
49、当主机选中与其通信的从机分,以便让从机识别。当主机选中与其通信的从机后,只有该从机能够与主机通信,其它从机不能与后,只有该从机能够与主机通信,其它从机不能与主机进行数据交换,而只能准备接收主机发来的地主机进行数据交换,而只能准备接收主机发来的地址帧。址帧。串行口以方式和方式接收时,若串行口以方式和方式接收时,若SM2=1,则则只有当收到的第只有当收到的第9位数据为位数据为1时,数据才装入时,数据才装入SBUF,并置位并置位RI,向向CPU发中断请求;如果接收到的第发中断请求;如果接收到的第9位数据为位数据为0,则,则RI不置不置1,接收到的数据将丢失。,接收到的数据将丢失。若若SM2=0,则不
50、论接收到的第则不论接收到的第9位数据是位数据是1还是还是0,都置位都置位RI,将接收到的数据装入将接收到的数据装入SBUF。利用这一利用这一特点,当主机发送地址帧时使特点,当主机发送地址帧时使TB8=1,发送数据帧发送数据帧时使时使TR8=0,TB8是发送一帧数据的第是发送一帧数据的第9位,从机位,从机接收后将第接收后将第9位数据作为位数据作为RB8,这样就知道主机发来这样就知道主机发来的这一帧数据是地址还是数据。但当一台从机的的这一帧数据是地址还是数据。但当一台从机的SM2=0时,可以接收地址帧和数据帧,而当时,可以接收地址帧和数据帧,而当SM2=1时只能接收地址帧,这样就实现主机与所选从机
51、之时只能接收地址帧,这样就实现主机与所选从机之间的单独通信。间的单独通信。 主机与特定从机的通信过程如下:主机与特定从机的通信过程如下:(1)(1)所有从机的所有从机的SM2位置位置1,处于接收地址帧状态。,处于接收地址帧状态。 (2)(2)主机发送从机地址主机发送从机地址( (并并TB8TB8位为位为1)1),然后进入接收状态,接收,然后进入接收状态,接收从机应答信号从机应答信号( (实际上就是相应从机的地址信息实际上就是相应从机的地址信息) )。 (3) (3) 所有从机均接收主机送出的地址信息,并与本机地址比较,所有从机均接收主机送出的地址信息,并与本机地址比较,当接收到的地址信息与本机
52、地址相符时,表示被选中,将本机地当接收到的地址信息与本机地址相符时,表示被选中,将本机地址信息发给主机,然后执行址信息发给主机,然后执行“CLR SM2”CLR SM2”指令,使指令,使SM2SM2位为位为0 0,以,以便接收主机随后送出的数据信息。对于未被选中的从机,便接收主机随后送出的数据信息。对于未被选中的从机,SM2SM2位位依然为依然为1 1,因此不接收主机送出的数据信息。,因此不接收主机送出的数据信息。 (4) (4) 主机收到从机的应答信号后,发出数据信息主机收到从机的应答信号后,发出数据信息( (TB8TB8位为位为0)0)。(5) (5) 从机正确接收主机数据信息后,发应答信
53、号给主机,并将从机正确接收主机数据信息后,发应答信号给主机,并将SM2SM2置置1 1,主机与从机通信过程结束。主机与从机通信过程结束。 从机与主机的通信过程如下:从机与主机的通信过程如下: (1) 发送前从机先检测发送前从机先检测TXD引脚,如果在引脚,如果在(20/波特率波特率)时间内,时间内,TXD引脚依然为高电平,则表明没有其他从机给主机发送信息,引脚依然为高电平,则表明没有其他从机给主机发送信息,主机的主机的RXD引脚处于空闲状态。引脚处于空闲状态。 (2) 从机确认主机的从机确认主机的RXD引脚处于空闲状态后,发出地址引脚处于空闲状态后,发出地址信息信息 (TB8位为位为1) 到主
54、机。到主机。 (3) 从机收到主机的应答信号从机收到主机的应答信号(实际是从机地址信息实际是从机地址信息)后,发后,发送数据送数据(TB8位为位为0)给主机,然后令从机的给主机,然后令从机的SM2为为0,以便接收主,以便接收主机发送的接收正确信号。机发送的接收正确信号。 (4) 主机正确接收后,再发接收正确信号给从机。主机正确接收后,再发接收正确信号给从机。 (5) 从机收到主机发来的从机收到主机发来的“接收正确接收正确”信号信号00H后,表明通后,表明通信过程结束,将信过程结束,将SM2位置位置1,以便从机能接收主机发送的地址信,以便从机能接收主机发送的地址信息息。 3、应用程序、应用程序主
55、机发送的地址联络信号为:主机发送的地址联络信号为:00H FEH,共共255个个从机。(即从机设备地址),地址从机。(即从机设备地址),地址FFH为控制各从机为控制各从机复位的命令,使从机恢复复位的命令,使从机恢复SM2=1状态。状态。主机发送两条控制命令:主机发送两条控制命令:01H,主机发送从机接收数,主机发送从机接收数据;据;02H,从机发送主机接收数据命令。,从机发送主机接收数据命令。从机状态字。该状态字由被寻址从机发出,主机接从机状态字。该状态字由被寻址从机发出,主机接收,用于指示从机的工作状态。其格式如下:收,用于指示从机的工作状态。其格式如下:RRDY=1:表示从机准备好接收。:
56、表示从机准备好接收。TRDY=1:表示从机准备好发送。:表示从机准备好发送。ERR=1: 表示从机接收的命令是非法的。表示从机接收的命令是非法的。程序分为主机程序和从机程序。约定一次传递数据为程序分为主机程序和从机程序。约定一次传递数据为1616个字节,以个字节,以01H01H地址的从机为例。地址的从机为例。 主机程序清单:主机程序清单: 设从机地址号存于设从机地址号存于40H单元,命令存于单元,命令存于41H单元。单元。 MAIN:MOV TMOD,#20H ;T1方式方式2MOV TH1,#0FDH ;初始化波特率初始化波特率9600MOV TL1,#0FDHMOV PCON,#00H S
57、ETB TR1 MOV SCON,#0F0H ;串口方式串口方式3,多机,准备接,多机,准备接 ;收应答收应答LOOP1:SETB TB8 MOV SBUF,40H ;发送预通信从机地址发送预通信从机地址 JNB TI,$ CLR TI JNB RI,$ ;等待从机对联络应答等待从机对联络应答CLR RI MOV A,SBUF ;接收应答,读至接收应答,读至AXRL A,40H ;判应答的地址是否正确判应答的地址是否正确 JZ AD_OK AD_ERR:MOV SBUF,#0FFH ;应答错误,发命令应答错误,发命令FFH JNB TI,$ CLR TI SJMP LOOP1 ;返回重新发送联
58、络信号返回重新发送联络信号 AD_OK:CLR TB8 ;应答正确应答正确 MOV SBUF,41H ;发送命令字发送命令字 JNB TI,$ CLR TI JNB RI,$ ;等待从机对命令应答等待从机对命令应答 CLR RI MOV A,SBUF ;接收应答,读至接收应答,读至A XRL A,#80H ;判断应答是否正确判断应答是否正确 JNZ CO_OK SETB TB8 SJMP AD_ERR ;错误处理错误处理CO_OK:MOV A,SBUF ;应答正确,判是发送还是接收命令应答正确,判是发送还是接收命令 XRL A,#01H JZ SE_DATA ;从机准备好接收,可以发送从机准备
59、好接收,可以发送 MOV A,SBUF XRL A,#02H JZ RE_DATA ;从机准备好发送,可以接收从机准备好发送,可以接收 LJMP SE_DATA RE_DATA:MOV R6,#00H ;清校验和接收清校验和接收16个字节数据个字节数据 MOV R0,#30H MOV R7,#10HLOOP2:JNB RI,$ CLR RI MOV A,SBUF MOV R0,AINC R0 ADD A,R6 MOV R6,A DJNZ R7,LOOP2 JNB RI,$ CLR RI MOV A,SBUF ;接收校验和并判断接收校验和并判断 XRL A,R6 JZ XYOK ;校验正确校验正
60、确 MOV SBUF,#0FFH ;校验错误校验错误 JNB TI,$ CLR TI LJMP RE_DATA XYOK :MOV SBUF,#00H ;校验和正确,发校验和正确,发00H JNB TI,$ CLR TI SETB TB8 ;置地址标志置地址标志 LJMP RETEND SE_DATA:MOV R6,#00H ;发送发送16个字节数据个字节数据 MOV R0,#30H MOV R7,#10H LOOP3 :MOV A,R0 MOV SBUF,A JNB TI,$ CLR TI INC R0 ADD A,R6 MOV R6,A DJNZ R7,LOOP3 MOV A,R6 MOV SBUF,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业税务缴纳周转借款合同
- 氢燃料电池汽车研发工程师考试试卷及答案
- 台达plc总线支持协议书
- 居住房买卖协议书范本
- 北京市租房协议书
- 韩国独立代理人协议书
- 事后补签借名购房协议书
- 粉尘影响农作物赔偿协议书
- 汽修厂租车协议书
- 带培管理制度
- 肉鸭营养需要量 编制说明
- 预激综合征护理课件
- 数系的扩充与复数的概念课件-2022-2023学年高一下学期数学人教A版(2019)必修第二册
- 2020全国新高考语文I卷《大师(节选)》试题及答案
- 公路工程施工突发环境污染事件应急预案
- 卫生事业管理学重点题库含答案
- 工程公司临建工程审批和验收管理办法
- 尿素项目可行性研究报告
- 计算机系统结构英文课件
- GB/T 3920-2008纺织品色牢度试验耐摩擦色牢度
- GB/T 19977-2005纺织品拒油性抗碳氢化合物试验
评论
0/150
提交评论