第7章AT89S51单片机的串行口.ppt
《第7章AT89S51单片机的串行口.ppt》由会员分享,可在线阅读,更多相关《第7章AT89S51单片机的串行口.ppt(95页珍藏版)》请在三一办公上搜索。
1、1,第7章 AT89S51单片机的串行口,1,成都理工大学工程技术学院自动化工程系,2,2,第7章 目录7.1 串行口的结构 7.1.1 串行口控制寄存器SCON 7.1.2 特殊功能寄存器PCON7.2 串行口的4种工作方式 7.2.1 方式0 7.2.2 方式1 7.2.3 方式2 7.2.4 方式37.3 多机通信0,3,7.4 波特率的制定方法 7.4.1 波特率的定义 7.4.2 定时器T1产生波特率的计算7.5 串行口的应用 7.5.1 双机串行通信的硬件连接 7.5.2 串行通信设计需要考虑的问题 7.5.3 双机串行通信软件编程 7.5.4 PC机与单片机的点对点串行通信接口设
2、计 7.5.5 PC机与单片机与多个单片机的串行通信接口设计,4,内容概要串行口的基本工作原理与串行口有关的特殊功能寄存器串行口的4种工作方式串行口多机通信的工作原理双机串行通信的软件编程。串行口为全双工的通用异步收发(UART)。全双工就是两个单片机之间串行数据可同时双向传输。异步通信,就是收、发双方使用各自的时钟控制发送和接收过程,这样可省去收、发双方的一条同步时钟信号线,连接简单且易实现。,5,7.1 串行口的结构内部结构如图7-1所示。有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。发送缓冲器只能写入不能读出接收缓冲器只能读出不能写入两个缓冲器共
3、用一个特殊功能寄存器字节地址(99H)。控制寄存器共有两个:特殊功能寄存器SCON和PCON。,5,6,图7-1 串行口的内部结构图,6,7,7.1.1 串行口控制寄存器SCON字节地址98H,可位寻址,位地址为98H9FH。格式如图7-2所示。图7-2 串行口控制寄存器SCON的格式介绍SCON中各位的功能。(1)SM0、SM1串行口4种工作方式选择位SM0、SM1两位编码所对应的4种工作方式见表7-1。,7,8,(2)SM2多机通信控制位多机通信是在方式2和方式3下进行。当串口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断
4、请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。,8,9,当SM2=0时,则不论第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时,SM2必须为0。(3)REN允许串行接收位。由软件置“1”或清“0”。REN=1,允许串行口接收数据。REN=0,禁止串行口接收数据。,9,10,(4)TB8发送的第9位数据方式2和方式3,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。在双机串行通信时,一般作为奇偶校验位使用;在多机串
5、行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。(5)RB8接收的第9位数据方式2和方式3,RB8存放接收到的第9位数据。在方式1,如SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。(6)TI发送中断标志位方式0,串行发送的第8位数据结束时TI由硬件置“1”,在其他方式中,串行口发送停止位的开始时置TI 为“1”。,10,11,TI=1,表示一帧数据发送结束。TI的状态可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。(7)RI接收中断标志位方式0时,接收完第8位数据时,RI
6、由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。,12,SCON的所有位都可进行位操作清“0”或置“1”。7.1.2 特殊功能寄存器PCON字节地址为87H,不能位寻址。格式如图7-3所示。,12,图7-3 特殊功能寄存器PCON的格式,13,下面介绍PCON中各位功能。仅最高位SMOD与串口有关,其他各位的功能已在第2章的节电工作方式一节中作过介绍。SMOD:波特率选择位。例如,方式1的波特率计算公式为方式1波特率=定时器T1的溢出率当SMOD=
7、1时,要比SMOD=0时的波特率加倍,所以也称SMOD位为波特率倍增位。,13,14,7.2 串行口的4种工作方式4种工作方式由特殊功能寄存器SCON中SM0、SM1位定义,编码见表7-1。7.2.1 方式0方式0为同步移位寄存器输入/输出方式。该方式并不用于两个AT89S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,扩展并行I/O口。8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率固定,为fosc/12。帧格式如图7-4所示。图7-4 方式0的帧格式,14,15,1方式0发送(1)方式0发送过程当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串
8、行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。发送时序如图7-5所示。,15,16,16,图7-5 方式0发送时序,17,(2)方式0发送应用举例图7-6所示为方式0发送的一个具体应用,通过串行口外接8位串行输入并行输出移位寄存器74LS164,扩展两个8位并行输出口的具体电路。方式0发送时,串行数据由P3.0(RXD端)送出,移位脉冲由P3.1(TXD端)送出。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从P3.0串行移入74LS164中。,17,18,图7-6 外接串入并出移
9、位寄存器74LS164扩展的并行输 出口,18,19,2方式0接收(1)方式0接收过程方式0接收,REN为串行口允许接收控制位,REN=0,禁止接收;REN=1,允许接收。当向SCON寄存器写入控制字(设置为方式0,并使REN位置1,同时RI=0)时,产生一个正脉冲,串行口开始接收数据。引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置1,表示一帧数据接收完毕,可进行下一帧数据的接收,时序如图7-7所示。,19,20,图7-7 方式0接收时序,21,(2)方式0接收应用举例图7-8为串行口外接两片8
10、位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口的电路。当74LS165的S/端由高到低跳变时,并行输入端的数据被置入寄存器;当S/=1,且时钟禁止端(第15脚)为低电平时,允许TXD(P3.1)串行移位脉冲输入,这时在移位脉冲作用下,数据由右向左方向移动,以串行方式进入串行口的接收缓冲器中。,21,22,22,图7-8 扩展74LS165作为并行输入口,23,在图7-8中:TXD(P3.1)作为移位脉冲输出与所有75LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行数据输入端与74LS165的串行输出端QH相连;P1.0与S/相连,用来控制74LS165的串行移位或
11、并行输入;74LS165的时钟禁止端(第15脚)接地,表示允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。,23,24,在方式0,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件使TI或RI中断标志位置“1”,CPU响应TI或RI中断,在中断服务程序中向发送SBUF中送入下一个要发送的数据或从接收SBUF中把接收到的1B存入内部RAM中。注意,TI或RI标志位必须由软件清“0”,采用如下指令:CLRTI;TI位清“0”CLRRI;RI位清“0”方式0时,SM2位(多机通信控制位)必须为0。,24,25,7.2.2 方式1方式1为双机串行通信方式,如图
12、7-9所示。当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。图7-9 方式1双机串行通信的连接电路,25,26,方式1一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如图7-10所示。图7-10 方式1的帧格式方式1为波特率可变的8位异步通信接口。波特率由下式确定:方式1波特率=定时器T1的溢出率式中,SMOD为PCON寄存器的最高位的值(0或1)。,26,27,1方式1发送方式1输出时,数据位由TXD端输出,发送一帧信息为10位:1位起始位0,8位数据位(先低位)和1位停止位1。当CPU执行一条数
13、据写SBUF的指令,就启动发送。发送时序见图7-11。图7-11中TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号 变为有效,将起始位向TXD脚(P3.1)输出,此后每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置1。,27,28,图7-11 方式1发送时序,28,29,2方式1接收方式1接收时(REN=1),数据从RXD(P3.0)引脚输入。当检测到起始位的负跳变,则开始接收。接收时序见图7-12。接收时,定时控制信号有两种,一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同,另一种是位检测器采样脉冲,频
14、率是RX时钟的16倍。以波特率的16倍速率采样RXD脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取两次相同的值,以确认起始位(负跳变)的开始,较好地消除干扰引起的影响。,29,30,图7-12 方式1接收时序,30,当确认起始位有效时,开始接收一帧信息。每一位数据,也都进行3次连续采样(第7、8、9个脉冲采样),接收的值是3次采样中至少两次相同的值。当一帧数据接收完毕后,同时满,31,足以下两个条件,接收才有效。(1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空
15、。(2)SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标志RI置“1”。若不同时满足两个条件,收的数据不能装入SBUF,该帧数据将丢弃。,31,32,7.2.3 方式2方式2和方式3,为9位异步通信接口。每帧数据为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位。方式2、方式3帧格式如图7-13所示。图7-13 方式2、方式3的帧格式方式2波特率=fosc,32,33,1方式2发送发送前,先根据通信协议由软件设置TB8(如奇偶校验位或多机通信的地址/数据标志位),然后将要发送的数
16、据写入SBUF,即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕,使TI位置“1”。发送时序如图7-14所示。图7-14 方式2和方式3发送时序,33,34,【例7-1】方式2发送在双机串行通信中的应用下面的发送中断服务程序,以TB8作为奇偶校验位,偶校验发送。数据写入SBUF之前,先将数据的偶校验位写入TB8(设第2组的工作寄存器区的R0作为发送数据区地址指针)。PIPTI:PUSHPSW;现场保护 PUSHAcc SETBRS1;选择第2组工作寄存器区 CLRRS0 CLRTI;发送中断标志清“0”MOVA,R0;取数据 MOVC,P;校验位送TB8,采用偶校验 MOVTB8,C
17、;P=1,校验位TB8=1,P=0,校验位TB8=0,34,35,MOV SBUF,A;A数据发送,同时发TB8 INC R0;数据指针加1 POP Acc;恢复现场 POP PSW RETI;中断返回2方式2接收SM0、SM1=10,且REN=1时,以方式2接收数据。数据由RXD端输入,接收11位信息。当位检测逻辑采样到RXD的负跳变,判断起始位有效,便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位RB8=1。,35,36,当满足上述两个条件时,收到的数据送
18、SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。若不满足这两个条件,接收的信息将被丢弃。串行口方式2和方式3接收时序如图7-15所示。图7-15 方式2和方式3接收时序,36,37,【例7-2】方式2接收在双机通信中的应用。本例对例7-1发送的数据进行偶校验接收,程序如下(设1组寄存器区的R0为数据缓冲区指针)。PIRI:PUSHPSW;保护现场PUSHAccSETBRS0;选择1组寄存器区CLRRS1CLRRI MOVA,SBUF;将接收到数据送到累加器AMOVC,P;接收到数据字节的奇偶性送入C位,37,38,JNCL1;C=0,收的字节1的个数为偶数,跳L1处JNBRB8,
19、ERP;C=1,再判RB8=0?如RB8=0,则;出错,跳ERP出错处理AJMPL2;C=1,RB8=1,收的数据正确,跳L2处 L1:JBRB8,ERP;C=0,再判RB8=1?如RB8=1,;则出错,跳ERP出错处理 L2:MOVR0,A;C=0,RB8=0或C=1,RB8=1,;接收数据正确,存入数据缓冲区INC R0;数据缓冲区指针增1,为下次接收做准备POP Acc;恢复现场POP PSW,38,39,ERP:;出错处理程序段入口RETI7.2.4 方式3SM0、SM1=11时,方式3。为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。方式3发送和接收时序如图7-11
20、和图7-12所示。方式3波特率=定时器T1的溢出率,39,40,7.3 多机通信多个单片机可利用串行口进行多机通信,经常采用如图7-16所示的主从式结构。系统中有1个主机(单片机或其他有串行接口的微机)和多个单片机组成的从机系统。主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。从机地址分别为01H、02H和03H。图7-16 多机通信系统示意图,40,41,主从式是指多机系统中,只有一个主机,其余全是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息,只能由主机接收。从机和从机之间不能进行直接通信,只能经主机才能实现。多机通信的工作原理:要保证主机与所选择的从
21、机通信,须保证串口有识别功能。SCON中的SM2位就是为满足这一条件设置的多机通信控制位。其工作原理是在串行口以方式2(或方式3)接收时,若SM2=1,则表示进行多机通信,可能以下两种情况:,41,42,(1)从机接收到的主机发来的第9位数据RB8=1时,前8位数据才装入SBUF,并置中断标志RI=1,向CPU发出中断请求。在中断服务程序中,从机把接收到的SBUF中的数据存入数据缓冲区中。(2)如果从机接收到的第9位数据RB8=0时,则不产生中断标志RI=1,不引起中断,从机不接收主机发来的数据。若SM2=0,则接收的第9位数据不论是0还是1,从机都将产生RI=1中断标志,接收到的数据装入SB
22、UF中。,43,应用这一特性,可实现AT89S51单片机的多机通信。多机通信的工作过程:(1)各从机初始化程序允许从机的串行口中断,将串行口编程为方式2或方式3接收,即9位异步通信方式,且SM2和REN位置“1”,使从机处于多机通信且只接收地址帧的状态。(2)在主机和某个从机通信之前,先将从机地址(即准备接收数据的从机)发送给各个从机,接着才传送数据(或命令),主机发出的地址帧信息的第9位为1,数据(或命令)帧的第9位为0。当主机向各从机发送地址帧时,各从机的串行口接收到的第9位信息RB8为1,且由,43,44,于各从机的SM2=1,则RI置“1”,各从机响应中断,在中断服务子程序中,判断主机
23、送来的地址是否和本机地址相符合,若为本机地址,则该从机SM2位清“0”,准备接收主机的数据或命令;若地址不相符,则保持SM2=1。(3)接着主机发送数据(或命令)帧,数据帧的第9位为0。此时各从机接收到的RB8=0。只有与前面地址相符合的从机(即SM2位已清“0”的从机)才能激活中断标志位RI,从而进入中断服务程序,接收主机发来的数据(或命令);与主机发来的地址不相符的从机,由于SM2保持为1,又RB8=0,因此不能激活中断标志RI,就不能接受主机,44,45,发来的数据帧。从而保证主机与从机间通信的正确性。此时主机与建立联系的从机已经设置为单机通信模式,即在整个通信中,通信的双方都要保持发送
24、数据的第9位(即TB8位)为0,防止其他的从机误接收数据。(4)结束数据通信并为下一次的多机通信做好准备。在多机系统,每个从机都被赋予唯一的地址。例如,图7-16三个从机的地址可设为:01H、02H、03H。还要预留12个“广播地址”,它是所有从机共有的地址,例如将“广播地址”设为00H。当主机与从机的数据通信结束后,一定要将从机再设置为多机通信模式,以便进行下一次的多机通信。,46,这时要求与主机正在进行数据传输的从机必须随时注意,一旦接收的数据第9位(RB8)为“1”,说明主机传送的不再是数据,而是地址,这个地址就有可能是“广播地址”。当收到“广播地址”后,便将从机的通信模式再设置成多机模
25、式,为下一次的多机通信做好准备。,46,47,7.4 波特率的制定方法串行通信,收、发双方发送或接收的波特率必须一致。4种工作方式。方式0和方式2的波特率是固定的;方式1和方式3的波特率是可变的,由T1溢出率确定。7.4.1 波特率的定义波特率的定义:串行口每秒发送(或接收)的位数。设发送一位所需要的时间为T,则波特率为1/T。定时器的不同工作方式,得到的波特率的范围不一样,这是由T1在不同工作方式下计数位数的不同所决定。,47,48,7.4.2 定时器T1产生波特率的计算和串行口的工作方式有关。(1)方式0时,波特率固定为时钟频率fosc的1/12,不受SMOD位值的影响。若fosc=12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89S51 单片机 串行口
链接地址:https://www.31ppt.com/p-4749022.html