特殊功能寄存器SCON和PCON-AT89S51单片机的串行口

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

之单片机原理第七章AT89S51单片机的串行口第7章-AT89S51单片机的串行口-2-7.1串行口的结构7.2串行口的4种工作方式7.3多机通信7.4波特率的制定方法7.5串行口的应用本章主要内容第7章-AT89S51单片机的串行口-3-内容概要串行口的基本工作原理与串行口有关的特殊功能寄存器串行口的4种工作方式串行口多机通信的工作原理双机串行通信的软件编程串行口为全双工的通用异步收发(UART)。全双工就是两个单片机之间串行数据可同时双向传输。异步通信,就是收、发双方使用各自的时钟控制发送和接收过程,这样可省去收、发双方的一条同步时钟信号线,连接简单且易实现。第7章-AT89S51单片机的串行口-4-7.1串行口的结构第7章-AT89S51单片机的串行口-5-7.1串行口的结构有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。发送缓冲器只能写入不能读出接收缓冲器只能读出不能写入两个缓冲器共用一个字节地址(99H)。控制寄存器共有两个:特殊功能寄存器SCON和PCON。第7章-AT89S51单片机的串行口-6-7.1.1串行口控制寄存器SCON6字节地址98H,可位寻址,位地址为98H-9FH。格式如图7-2所示。第7章-AT89S51单片机的串行口-7-SCON中各位的功能(1)SM0、SM1—串行口4种工作方式选择位第7章-AT89S51单片机的串行口-8-SCON中各位的功能(2)SM2—多机通信控制位多机通信是在方式2和3下进行。①串口以方式2或方式3接收时如果SM2=1:则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。如果接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。如果SM2=0:则不论第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。第7章-AT89S51单片机的串行口-9-SCON中各位的功能(2)SM2—多机通信控制位②在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。③在方式0时,SM2必须为0。第7章-AT89S51单片机的串行口-10-SCON中各位的功能(3)REN—允许串行接收位由软件置“1”或清“0”。REN=1,允许串行口接收数据。REN=0,禁止串行口接收数据。(4)TB8—发送的第9位数据方式2和方式3,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。在双机串行通信时,一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。第7章-AT89S51单片机的串行口-11-SCON中各位的功能(5)RB8—接收的第9位数据方式2和方式3,RB8存放接收到的第9位数据;在方式1,如SM2=0,RB8是接收到的停止位;在方式0,不使用RB8。(6)TI—发送中断标志位方式0,串行发送的第8位数据结束时TI由硬件置“1”;在其他方式中,串行口发送停止位的开始时置TI为“1”。TI=1,表示一帧数据发送结束。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。第7章-AT89S51单片机的串行口-12-SCON中各位的功能(7)RI—接收中断标志位方式0时,接收完第8位数据时,RI由硬件置“1”;在其他工作方式中,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。SCON的所有位都可进行位操作清“0”或置“1”。第7章-AT89S51单片机的串行口-13-7.1.2特殊寄能寄存器PCON字节地址为87H,不能位寻址。第7章-AT89S51单片机的串行口-14-PCON中各位的功能仅最高位SMOD与串口有关,其他各位的功能已在第2章的节电工作方式一节中作过介绍。SMOD:波特率选择位。例如,方式1的波特率计算公式为方式1波特率=定时器T1的溢出率当SMOD=1时,要比SMOD=0时的波特率加倍,所以也称SMOD位为波特率倍增位。SMOD232第7章-AT89S51单片机的串行口-15-7.2串行口的4种工作方式方式0方式1方式2方式34种工作方式由特殊功能寄存器SCON中SM0、SM1位定义。第7章-AT89S51单片机的串行口-16-7.2.1方式0方式0为同步移位寄存器输入/输出方式。该方式并不用于两个AT89S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,扩展并行I/O口。8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率固定,为fosc/12。第7章-AT89S51单片机的串行口-17-1、方式0发送(1)方式0发送过程当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。第7章-AT89S51单片机的串行口-18-1、方式0发送(2)方式0发送应用举例外接串入并出移位寄存器74LS164扩展的并行输出口第7章-AT89S51单片机的串行口-19-1、方式0发送(2)方式0发送应用举例通过串行口外接8位串行输入并行输出移位寄存器74LS164,扩展两个8位并行输出口。方式0发送时,串行数据由P3.0(RXD端)送出,移位脉冲由P3.1(TXD端)送出。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从P3.0串行移入74LS164中。第7章-AT89S51单片机的串行口-20-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章-AT89S51单片机的串行口-21-2、方式0接收第7章-AT89S51单片机的串行口-22-2、方式0接收(2)方式0接收应用举例图7-8扩展74LS165作为并行输入口第7章-AT89S51单片机的串行口-23-2、方式0接收(2)方式0接收应用举例图7-8为串行口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口的电路。当74LS165的S/端由高到低跳变时,并行输入端的数据被置入寄存器;当S/=1,且时钟禁止端(第15脚)为低电平时,允许TXD(P3.1)串行移位脉冲输入,这时在移位脉冲作用下,数据由右向左方向移动,以串行方式进入串行口的接收缓冲器中。LL第7章-AT89S51单片机的串行口-24-2、方式0接收TXD(P3.1)作为移位脉冲输出与所有75LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行数据输入端与74LS165的串行输出端QH相连;P1.0与S/相连,用来控制74LS165的串行移位或并行输入;74LS165的时钟禁止端(第15脚)接地,表示允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。L第7章-AT89S51单片机的串行口-25-7.2.2方式1方式1为双机串行通信方式,如图所示。当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。第7章-AT89S51单片机的串行口-26-7.2.2方式1方式1一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如图所示。方式1为波特率可变的8位异步通信接口。波特率由下式确定:方式1波特率=定时器T1的溢出率SMOD为PCON寄存器的最高位的值(0或1)SMOD232第7章-AT89S51单片机的串行口-27-1、方式1发送方式1输出时,数据位由TXD端输出。当CPU执行一条数据写SBUF的指令,就启动发送。第7章-AT89S51单片机的串行口-28-1、方式1发送图中TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD脚(P3.0)输出,此后每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置1。第7章-AT89S51单片机的串行口-29-2、方式1接收方式1接收时(REN=1),数据从RXD(P3.1)引脚输入。当检测到起始位的负跳变,则开始接收。第7章-AT89S51单片机的串行口-30-2、方式1接收接收时,定时控制信号有两种,一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同;另一种是位检测器采样脉冲,频率是RX时钟的16倍。即以波特率的16倍速率采样RXD脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取两次相同的值,以确认起始位(负跳变)的开始,较好地消除干扰引起的影响。第7章-AT89S51单片机的串行口-31-2、方式1接收当确认起始位有效时,开始接收一帧信息。每一位数据,也都进行3次连续采样(第7、8、9个脉冲采样),接收的值是3次采样中至少两次相同的值。第7章-AT89S51单片机的串行口-32-2、方式1接收当一帧数据接收完毕后,同时满足以下两个条件,接收才有效。(1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。(2)SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标志RI置“1”。若不同时满足两个条件,收的数据不能装入SBUF,该帧数据将丢弃。第7章-AT89S51单片机的串行口-33-7.2.3方式2方式2和方式3,为9位异步通信接口。每帧数据为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位。方式2、方式3帧格式如图7-13所示。方式2波特率=foscSMOD264第7章-AT89S51单片机的串行口-34-1、方式2发送发送前,先根据通信协议由软件设置TB8(奇偶校验位或多机通信的地址/数据标志位),然后将要发送的数据写入SBUF,即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕,使TI位置“1”。第7章-AT89S51单片机的串行口-35-1、方式2发送【例7-1】方式2发送在双机串行通信中的应用下面的发送中断服务程序,以TB8作为奇偶校验位,偶校验发送。数据写入SBUF之前,先将数据的偶校验位写入TB8(设第2组的工作寄存器区的R0作为发送数据区地址指针)。第7章-AT89S51单片机的串行口-36-1、方式2发送PIPTI:PUSHPSW;现场保护PUSHAccSETBRS1;选择第2组工作寄存器区CLRRS0CLRTI;发送中断标志清“0”MOVA,@R0;取数据MOVC,P;校验位送TB8,采用偶校验MOVTB8,C;P=1,校验位TB8=1;P=0,校验位TB8=0MOVSBUF,A;A数据发送,同时发TB8INCR0;数据指针加1POPAcc;恢复现场POPPSWRETI;中断返回第7章-AT89S51单片机的串行口-37-2、方式2接收SM0、SM1=10,且REN=1时,以方式2接收数据。数据由RXD端输入,接收11位信息。当位检测逻辑采样到RXD的负跳变,判断起始位有效,便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位R

1 / 102
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功