220 likes | 359 Views
9.2 AT89C51 的串行接口. 9.2.1 串行接口的结构及功能 AT89C51 串行口的结构框图如图 9-8 所示,主要由发送器、接收器和串行控制寄存器组成。. 图 9-8 AT89C51 串行口结构框图. 1 .发送器和接收器 发送器主要由发送缓冲寄存器 SBUF 和发送控制器组成。 接收器主要由接收缓冲寄存器 SBUF ,接收移位寄存器和接收控制器组成。. 2 .串行口控制寄存器
E N D
9.2 AT89C51的串行接口 • 9.2.1 串行接口的结构及功能 • AT89C51串行口的结构框图如图9-8所示,主要由发送器、接收器和串行控制寄存器组成。
1.发送器和接收器 • 发送器主要由发送缓冲寄存器SBUF和发送控制器组成。 • 接收器主要由接收缓冲寄存器SBUF,接收移位寄存器和接收控制器组成。
2.串行口控制寄存器 • 串行口控制寄存器SCON用于设置串行口的工作方式、监视串行口工作状态、发送与接收的状态控制等。它是一个既可字节寻址又可位寻址的特殊功能寄存器。其格式如图9-9所示。
SCON寄存器各位的功能如下: • (1) SM0、SM1:串行口工作方式选择位,可构成四种工作方式,如表9-1所示。 • (2) SM2:在方式2和方式3中多机通信的控制位。 • (3) REN:串行接收允许位。 • (4) TB8:在方式2或方式3中,是将要发送的第九位数据,由软件置位或清零,它可作为数据奇偶校验位,也可在多机通信中作为地址帧或数据帧的标志位使用。
SM0 SM1 工作方式 功 能 波特率 0 0 0 1 1 0 1 1 方式0 方式1 方式2 方式3 同步移位寄存器 10位异步收发 11位异步收发 11位异步收发 fosc/12 可变 fosc/64或fosc/32 可变 • 表9-1 串行口工作方式选择
(5) RB8:在方式2或方式3中,是已接收到的第九位数据,可作为奇偶校验位。 • (6) TI:发送中断标志位。 • (7) RI:接收中断标志位,方式0中,在接收完第八位数据时由硬件置位。 • 电源控制寄存器PCON中的第八位也与串行口有关,如图9-10所示。 • (8) SMOD:为波特率选择位。
9.2.2 串行通信的工作方式 • 1.工作方式0 • 在方式0下,串行口是作为同步移位寄存器使用的。其波特率固定为单片机振荡频率(fosc)的1/12,串行传送数据8位为一帧(没有起始、停止、奇偶校验位)。由RXD(P3.0)端输出或输入,低位在前,高位在后。TXD(P3.1)端输出同步移位脉冲,可以作为外部扩展的移位寄存器的移位时钟,因而串行口方式0常用于扩展外部并行I/O口。 • 串行发送时,外部可扩展一片(或几片)串入并出的移位寄存器,如图9-11所示。
串行接收时,外部可扩展一片(或几片)并入串出的移位寄存器,如图9-12所示。当由软件使REN置为1,RI=0时,即启动串行口以方式0接收数据。
2.工作方式1 • 在方式1下,串行口工作在10位异步通信方式,发送或接收一帧信息中,除8位数据移位外,还包含一个起始位(0)和一个停止位(1),其波特率是可变的。 • 工作方式1的波特率是可变的,由定时器T1的计数溢出率决定。相应的公式为 • 波特率= ×定时器T1溢出率
定时器T1溢出率= • 定时器T1的计数溢出率计算公式为 式中,K为定时器T1的位数,与定时器T1的工作方 式有关(见第5章介绍),则波特率计算公式为 波特率=
3.工作方式2 • 在方式2下,串行口工作在11位异步通信方式。一帧信息包含一个起始位“0”,八个数据位,一个可编程第九数据位和一个停止位“1”。其中可编程位是SCON中的TB8位,在八个数据位之后,可作奇偶校验位或地址/数据帧的标志位使用,由使用者确定。方式2的波特率是固定的。
4.工作方式3 • 在方式3下,串行口同样工作在11位异步通信方式,其通信过程与方式2完全相同,所不同的是波特率,方式3的波特率由定时器T1的计数溢出率决定,确定方法与工作方式1中的完全一样。
晶振频率/MHz 波特率/Hz SMOD TH1包装初值 实际波特率 误差 12.00 9600 1 F9H 8923 7% 12.00 4800 0 F9H 4460 7% 12.00 2400 0 F3H 2404 0.16% 12.00 1200 0 E6H 1202 0.16% 11.0592 19 200 1 FDH 19 200 0 11.0592 9600 0 FDH 9600 0 11.0592 4800 0 EAH 4800 0 11.0592 2400 0 F4H 2400 0 11.0592 1200 0 E8H 1200 0 • 表9-2 常用波特率及误差
9.2.3 多机通信 • AT89C51单片机串行口工作在方式2或方式3时,可实现多机通信功能,即一台主机和多台从机之间通信,如图9-13所示。 • 当主机向从机发送信息时,主机首先发送一个地址帧,此帧数据的第九数据位TB8应设置为“1”,以表示是地址帧,8位数据位是某台从机的地址。
这种通信只能在主从机之间进行,从机之间的通信需经主机作中介才能实现。经过上面分析,多机通信的过程可总结如下:这种通信只能在主从机之间进行,从机之间的通信需经主机作中介才能实现。经过上面分析,多机通信的过程可总结如下: • (1) 主、从机均初始化为方式2或方式3,且置SM2=1,REN=1,串行开中断。 • (2) 主机置位TB8=1,向从机发送寻址地址帧,各从机因满足接收条件(SM2=1,RB8=1),从而接收到主机发来的地址,并与本机地址比较。
(3) 地址一致的从机将SM2清零,并向主机返回地址,供主机核对,不一致的从机恢复初始状态。 • (4) 主机核对返回的地址,若与刚才发出的地址一致则准备发送数据,若不一致则返回(1)重新开始。 • (5) 主机向从机发送数据,此时主机TB8=0,只有被选中的那台从机能接收到该数据,其他从机则舍弃该数据。 • (6) 本次通信结束后,主从机重新置SM2=1,又可进行新一次的通信。