您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 特殊功能寄存器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
本文标题:特殊功能寄存器SCON和PCON-AT89S51单片机的串行口
链接地址:https://www.777doc.com/doc-3930002 .html