第七章串口通信 教学目的和要求 本章主要介绍串行通信的基本概念、原理:MCS-51单片机串口 的基本结构、工作方式及使用方法。要求了解同步通信、异步通信的 通信格式,熟悉串行通信的制式、异步串行通信的帧格式等概念。学 握MCS-51串口的基本结构、工作方式、点对点的通信、单片机与 PC机的通信,了解多机通信基本原理。 重点:单片机串口的基本结构、工作方式及使用方法 难点:单片机串口的工作方式及使用方法 学时:2 7.1串行通信基础知识 1、通信有两种基本方式:并行通信、串行通信:如下图 发送 ,接收 B 位号地 控制(通 a)并行通 州行通的 并行通信的特点:各数据位同时传送,传送速率快,效率高,但 有多少位数据就需要多少根数据线,传输成本高,传输距离短(小于 30米). 串行通信的特点:数据按位顺序传送,最少只需要一根数据线, 成本低,速率慢,传输距离长(几米到几千米》 2、串行通信分为:异步通信、同步通信 同步通信的特点:首先“同步通信”的通信双方必须先建立同 1
步,即双方的时钟要调整到同一个频率。其次每帧信号的开始要加上 同步信息,接受端以同步信息为基准,按规定的帧格式接受信号。某 帧中没有信息要传输时,在同步信息之后的信息位上要填上空字符, 因为同步传输不允许有间隙 异步通信的特点:数据也是以帧为单位传输的,发送端可以在任 意时间发送帧,所以接收端必须随时做好接收帧的准备。这就使得必 须对帧要进行定界。帧定界包含帧起始位和帧结束位标志。(如下图) 第1字符 一第n字符航 一第n+1字符 8位数 8你数据■ D:0/11 0 Do D:D:Da DaDa D.D7 0/1 1 0 D.Dr D:Da... 岛位 即:①、各帧的发送时间时任意的: ②、帧的开始和结束要加上帧定界标志: ③、每一帧内bit的传输是连续的,发送端不需要在发送 帧之前和接收端进行协调(不需要先进行比特同步)。 3、串行通信分为3种制式:单工、半双工、全双工。 2一品 特点:发送端不接受,接收端不发送 (a)单工传送 特点:终端既能发送又能接受,但两者不能 同时进行,由转换开关转换,发送时 半从工传送 不接受,接受时不发送。 特点:发送接受同时进行。 (⊙)企双工传送
4、串行通信的传输速率 波特率:每秒钟传送的二进制数码的位数,单位是b/s 波特率是串行通信的重要指标,用于表征数据传送的速率。波特 率越高,数据传输速度越快。 字符的实际传送速率与波特率不同。字符的实际传送速率是指每 秒钟内所传字符帧的帧数,与字符帧格式有关。 码元宽度T:每位的传送时间,为波特率的倒数, 通常,异步通信的波特率在50一9600b/s之间。 注意:在编制串行通讯程序时,首先要确定两个参数: 1,通讯双方的“波特率”,必须保持严格一致: 2,传输数据的格式“字符帧格式”必须统一。 7.2MCS-51的串行口及控制寄存器 MCS-51单片机有一个全双工的串行口,可作异步通信串行口 (UART用。 一、MCS-51的串行口的结构 发 发送控制可 RxC 按收控制器R1 SBUF RxD 按收(99H) 移将行器片 组成:串行数据寄存器SBUF、发送控制器、接收控制器、输入 移位寄存器、输出控制门。 3
特点:串行数据寄存器SBUF其时是两个物理上独立的接收缓冲 器SBUF和发送缓冲器SBUF,两个缓冲器占用同一个地址(99H), 可同时接收和发送数据。发送缓冲器只能写入不能读出,接收缓冲器 只能读出不能写入 两个特殊功能寄存器SCON和PCON用来控制串行口的工作方 式和波特率。 二、串行口控制寄存器 1、串行口控制寄存器SCON(可位寻址) 串行口控制寄存器SCON决定串行口通信工作方式,控制数据的 接收和发送,并标示串行口的工作状态等。其位格式为:(P106) SCON(98H) D7D6D5 D4D3D2 DI D0 SMO SMI SM2 REN TB8 RBS TI RI SCON功能:串行据通信方式选择、接收和发送控制以及串行口 的状态标志。 SM0、SM1:控制串口的工作方式。(fosc是晶振频率) SM0SM1工作方式 功能 波特案 00方式0 同步移位寄有器 f/12 01方式1 1+8+1位异步通信 由定时器轻制 10方式2 1+91位异步通信 32或64 11方式3 1+91位异步通信 由定时器控制 SM2:多机通信控制位 在方式2或方式3时,若SM2=1,则: (1)当接受到的第9位数据RB8=1时,将接收的前8位数据 送入SBUF中(接收有效),并使RI=1,同时向CPU申请中断: (2)当接受到的第9位数据RB8=0时,丢弃接收的前8位数 4
据,使RI=0,无中断申请(接收无效)。 方式2或方式3时,若SM2=0,则不管第9位数据(RB8)是0还 是1,都将接收的前8位数据送入SBUF中,都置RI=1,向CPU申 请中断。 方式0时,SM2=0。 方式1时,若SM2=l,只有接收到有效的停止位,接收中断RI 才置1。 REN:串行接收控制位。REN=1,允许接收;REN-O,禁止接收。 TB8:在方式2和方式3时要发送的第9位数据,功能是在多机 通信时表示主机发送的是数据还是地址:(TB8=0为数据,TB8=1 为地址),由软件置位和复位。非多机通信时也可以作为发送数据的 奇偶效验位使用。 RB8:在方式2和方式3时接收到的第9位数据。功能是在多机 通信时表示接收到的数据的性质;(RB8=0为数据,RB8=1为地址) 在方式0时:RB8不使用,必须为0。 在方式1时:SM2-0时,RB8为接收到的停止位。 非多机通信时还可以用于对接收到的数据进行奇偶效验。 T:发送结束申请中断标志位(发送数据有效时由硬件自动置位) 方式0中,在发送数据第8位结束后由硬件自动置位:其它方 式中,在停止位开始发送时由硬件自动置位。 T=1:表示1帧数据发送结束,告诉CPU可以发送下一帧数据。 由硬件置位,用软件清除(响应中断后,不自动清0,由软件完成)。 I:接收结束申请中断标志位(接收数据有效时由硬件自动置位) 5
方式0中,在接收数据第8位结束后由硬件自动置位:其它方 式中,接收有效时由硬件自动置位: RI=I:表示1帧数据已经接收结束,告诉CPU可以从接收数据 缓存器SBUP中取接收到的数据。由硬件置位,用软件清除(响应中 断后,不自动清0,由软件完成)。 注意:①、系统复位后,SCON中所有位都被清除。 ②、TI和RI是同一个中断源,CPU事先不知道是发送中断TI 还是接收中断RI产生的中断请求,所以在全双工通信时,必须由软 件来判别。 2、电源控制寄存器PCON(不能位寻址) D7 D6 D5 D4 D3 D2 D1 D0 PCON SMOD---GF1 GFO PD IDL 电源控制寄存器仅有几位有定义,其中最高位SMOD与串口控 制有关,其它位与掉电方式有关。寄存器PCON的地址为87H,只能 字节寻址 ①、SMOD(PCON.7):串行通信波特率系数控制位。 SMOD=1时,方式1、2、3时的波特率加倍。复位后,SMOD=O。 SMOD=O时,串口的速率由SCON决定, SMOD的取值对方式0的速率没影响。 ②、GF1、GFO:两个通用标志位,用户使用他们作一些标志 ③、PD、DL:CHMOS型8051单片机的低功耗控制位 当PD=1,则80C51进入掉电方式,此时片内振荡器停止工作, 仅片内RAM内容被保持
当DL=1,则80C51进入节电方式。这时供给CPU的时钟信号 被切断,但时钟信号仍送给片内RAM、定时器、中断系统和串口, 同时CPU状态被保存,即堆栈指针、程序计数器PC、程序状态字 PSW、累加器ACC及通用寄存器的内容。 3、中断允许控制寄存器正 位地址AF阳AEH ADH ACH ABH AABA9HA8H EEA一 -ES ETI EX1 ETO EXO ES-0串口中断禁止;ES=1允许串口中断 三、串口工作方式 MCS-51串行口有0、1、2、3四种工作方式 方式0:8位同步移位寄存器 方式1:1+8+1位通用异步通信 方式2:1+9+1位异步通信 方式3:可变波特率1+9+1位异步通信 1、方式0 ①、特点 SM0SM1=00时,串口工作于方式0,此时串口作为8位同步移 位寄存器使用,由RXD(P3.0)引脚输入或输出数据,由TXD(P3.1) 引脚以f/12的固定频率输出同步脉冲(同步中需要同步信息)。 ②、发送过程 在发送中断标志TI=0(没中断),CPU执行一条向发送缓存器 SBUF写数据的指令(MOV SBUF,A),就启动串行数据的发送, 经过一个机器周期,SBUF中的数据按低位在前,高位在后的顺序从 1
RXD端依次送出,而同步时钟从TXD送出。一帧(8位)数据发送 结束,由硬件使发送中断标志T=1,向CPU申请中断,中断响应后 必须由软件让TI=0,可以发送下一帧数据。 ③、接收过程 当REN=1(允许接收),且接收中断标志RI=0时,就会启动 次接收过程,串行数据通过RXD输入,而通过TXD输出同步脉冲, 在同步脉冲的控制下,串行通过数据RXD端输入到接收缓存器 SBUF,当一帧(8bit)数据全部移入SBUF后,由硬件自动使接收中 断标志RI=I,向CPU申请中断,中断响应后,CPU将SBUF中的 数据取走,然后用软件使RI=0数据。 2、方式1 ①、特点 SM0SM1-O1时,串口工作于方式1,即8位异步通信方式,此 方式下,一帧数据10bit:1bit起始位(0),8bit数据(低位在前,高 位在后),1bit停止位(1)。由RXD(P3.0)引脚发送数据,由TXD (P3.1)引脚接收数据。 ②、波特率(可设置)一由定时器T1的溢出率和PCON中的 SMOD决定 公式。波特率二2 32×T1的溢出率 其中:smod(=0/1)为PCON中SMOD的取值 T1作为波特率发生器时一般工作于方式2(8位自动装入),设 计数初始值为X,则计数溢出周期(定时长)为:T=(256-X)x121」
所以T1溢出率为溢出周期倒数:(256-X)x12 所以: 波特率=2 32*(256-X)×12 ③、发送过程 在发送中断标志T1=0(没中断),CPU执行一条向发送缓存器 SBUF写数据的指令(MOV SBUF,A),就启动串行数据的发送。 数据由TXD(P3.1)引脚送出,发送时钟由T1送来的溢出信号经16分 频或32分频后得到。一帧(10位)数据发送结束,由硬件使发送中 断标志TI=1,向CPU申请中断,中断响应后,必须由软件让TI=0, 可以发送下一帧数据 ④、接收过程 当REN=1(允许接收),接收器就开始工作,接收器以16倍波特 率采样RXD(P3.0)引脚上的电平。当采样到从1至0的跳变后,启 动接收控制寄存器开始接收数据,当8位数据和一位停止位全部移入 时,按下面状态进行响应。 ※RI=0,SM2=O:数据→SBUF,停止位一RB8,RI=1,向 CPU申请中断。 ※RI=0,SM2=1:只有停止位为1时才发生上述操作 ※RI=0,SM2=1,且停止位为0:将接收到的数据丢失,不装 入SBUF ※RI=I:将接收到的数据丢失,不装入SBUF。 3、串行口方式2和方式3 ①、SM0SM1=10/11时,串口工作于方式2/3,即9位异步串行
通信(UART),此方式下,一帧数据11bit:1bit起始位(0),8bit 数据(低位在前,高位在后),1bit可编程位(第9位数据),lbit停止位 (1)。发送的第9位数据放于TB8中,接收的第9位数据放于RB8 中,由RXD(P3.0)引脚发送数据,由TXD(P3.1)引脚接收数据。 ②、方式2、3的区别—波特率产生方式不同。 (1)方式2的波特率是固定的,为的32(SMOD=1)或f64 (SMOD=0)。 (2)方式3的波特率可变,由定时器/计数器T1的溢出和PCON 中的SMOD决定,可用程序设定。(与方式1相同) 公式。谈特率=2 32×T的溢出幸 或.波特率一一32一×256一., (X是T1的初始值,f晶振频 率) ③、工作原理:方式2、3与方式1类似,多1个第9位数据 TB8(发送)、RB8(接收)。 注意:※、发送前必须将第9位数据装入TB8,在发送指令的指 引下,TB8中的数据跟在前8位数据之后。 ※、接收到的第9位数据不是停止位,存放于RB8中,接收是 否有效,也是由该位判断的,而不是由停止位判断。 4、总结 串口的四种工作方式中,串行通信只使用方式1、方式2、方式 3,方式0主要用于扩展并行输入输出口。 四种模式的接收、发送条件