第七章 串口通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
停止位 :位于字符帧最后,为逻辑1高电平。通常可取1位、 1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也 为发送下一帧作准备。
2. 同步通信(Synchronous Communication)
以数据块为单位进行数据传送,包括同步字符、 数据块和校验字符CRC。优点是数据传输速率较高,缺 点是要求发送时钟和接收时钟保持严格同步。数据格式 如下图所示。
(3) 接收: 每接收一帧(10位)有效数据,自 动装载SBUF,停止位进入RB8,RI=1,向CPU 申 请中断,RI 需用软件清零。
三、 方式2和方式3: 11位UART
(1)功能: 11位异步串行通信方式,方式2 波 特率 固定,方式3 波 特率可变,TXD 发送,RXD 接收,低 位在前,高位在后,第9位为可编程位,其帧格式为:
每一位代码的传送时间Td为波特率的倒数
Td=1b/1200b·s-1
通常,异步通信的波特率为50~9600 b/s。
7.2 单片机的串行接口
7.2 .1 单片机的串行接口结构
串行接收和发送缓冲器 SBUF是两个在物理上独立 的接收发送器,既可以接收 数据也可以发送数据。但接 收缓冲器只能读出不能写入, 而发送缓冲器则只能写入不 能读出,它们的地址为99H。 接收器是双缓冲结构 ;发 送缓冲器,因为发送时CPU 是主动的,不会产生重叠错 误
发送,RXD 接收,低位在前,高位在后,其帧格式为:
起始 停止
0
D0
D1
D2
D3
D4
D5
D6
D7
1
(2)发送: CPU执行一条写入SBUF的指令,自动启动
TXD 逐位移出数据,每发送一帧(10位)数据,TI=1,向
CPU 申请中断,TI 需用软件清零。
波特率:
2 SMOD 模式1或3的波特率 T 1的溢出率 32 2 SMOD fOSC 32 12 (256 TH 1)
起始
0
D0
D1
D2
D3
D4
D5 D6
D7
TB8/RB8 停止 1
(2) 发送:CPU执行一条写入SBUF的指令,自动启 动TXD逐位移出数据,第9位数据为SCON中的TB8,每 发送一帧(11位)数据,TI=1,向CPU 申请中断,TI 需 用软件清零。
波特率:
2 SMOD 模式2的波特率 晶振频率 64
三、接收程序
REN=1、RI=0等待接收,当RI=1,从SBUF读取数 据。 1.查询方式:
WAIT: JBC RI,NEXT SJMP WAIT NEXT: MOV A,SBUF MOV @R0,A INC R0 SJMP WAIT
;查询等待
;读取接收数据
;保存数据
;准备下一次接收
串行口应用举例
TXD(P3.1)端提供移位时钟脉冲。移位数据的发送和接收以
8位为一帧,低位在前高位在后。
使用查询方法完成的参考程序如下:
MOV SCON , #00H ;串行口方式0工作
CLR ES MOV A,#80H ;禁止串行中断 ;发光管从左边亮起
DELR: CLR P1.0
MOV SBUF,A JNB TI,$ SETB P1.0 ACALL DELAY CLR TI RR A AJMP DELR
例1
使用CD4094的并行输出端接8支发光二极管,利用
它的串入并出功能,把发光二极管从左向右依次点亮,并
反复循环之。假定发光二极管为共阴极型,则电路连接如 图所示。
分析:使用方式0实现数据的移位输入输出时,实际上是把
串行口变成为并行口使用。串行口作为并行输出口使用时,
要有“串入并出”的移位寄存器(例如CD4094或 74LS164,74HC164等)配合。 在方式0下,是把串行口作为同步移位寄存器使用,这 时以RXD(P3.0)端作为数据移位的入口和出口,而由
串行通信:数据一位一位顺序发送或接收。特点是传 送速度慢,但成本低。适用于较长距离传送数据。计 算机与外界的数据传送一般均采用串行方式。
发送
…
计算机1 GND
计算机2 或外设 GND
计算机1 GND
接收
计算机2 或外设 GND
(a)
(b)
(a) 并行通信
(b) 串行通信
7.1.2 串行通信的数据传送方式
在异步通信中,数据通常一帧一帧地发送,每一 帧数据均是低位在前,高位在后,通过传输线被接收端 一帧一帧地接收。
字符帧(Character Frame)
字符帧也叫数据帧,由起始位、数据位、奇偶校
验位和停止位等4部分组成,如图所示。
起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于 向接收设备表示发送端开始发送一帧信息。 数据位 :紧跟起始位之后,用户根据情况可取5位、6位、7 位或8位,低位在前高位在后。 奇偶校验位 :位于数据位之后,仅占一位,用来表征串行通 信中采用奇校验还是偶校验,由用户决定。
PRI:MOV A,SBUF;奇偶校验判P=RB8 JNB PSW.0,PNP
JNB RB8,PER
SJMP RIGHT PNP:JB RB8,PER
RIGHT:MOV @R0,A;数据送缓冲器
在串行通信中数据是在两个站之间进行传送的,
按照数据传送方向,串行通信可分为单工(simplex)、
半双工(half duplex)和全双工(full duplex)三种制
式。
单工方式:数据仅按一个固定方向传送; 半双工方式:数据可实现双向传送,但不能同时进行; 全双工方式:允许双方同时进行数据双向传送;
SM0、SM1:工作方式选择位。
SM0 SM1 方式 功能说明 移位寄存器方式 (用于I/O口扩展) 10位异步(UART)收发方式 11位异步(UART)收发方式 波特率 fosc/12 由T1控制 fosc/32 或fosc/64 由T1控制
0 0 1 1
0 1 0 1
0 1 2 3
11位异步(UART)收发方式
1)功能: 8位同步移位寄存器输入/输出口,波 特率固定为: fosc/12。低位在前,高位 在后。
……
D0
D1
D2
D3
D4
D5
D6
D7
……
2)发送: RXD 逐位移出数据,TXD 输出移位脉冲,每发 送一帧(8位)数据,TI=1,向CPU 申请中断,TI 需用软件 清零。 波特率:模式 0 的波特率等于单片机晶振频率的 1/12, 即 每个机器周期接收或发送一位数据。
第7章
串行口通信技术
7.1 串行通信基础
通信:单片机与外界进行信息交换统称为通信。
89C51单片机的通信方式有两种:
在生活中同学们排横队行走——并行;排纵队行走——串行。
并行通信:数据的各位同时发送或接收。特点是传送
速度快、效率高,但成本高。适用于短距离传送数据。
计算机内部的数据传送一般均采用并行方式。
程序清单如下 TRT:MOV SCON,#80H;方式2设定 MOV PCON,#80H;取波特率为fosc/32 MOV R0,#50H MOV R7,#10H;数据长度10H LOOP:MOV A,@R0;取数据送A MOV C,PSW.0;奇偶校验位写入TB8 MOV TB8,C MOV SBUF,A;数据送SBUF,启动发送 WAIT:JBC TI,CONT;判断发送中断标志 SJMP WAIT CONT:INC R0 DJNZ R7,LOOP;判断数据发送完否? RET
例3 设计一个接收程序,将接收的16个字节数据送入片内 RAM50H~5FH单元中。设串行口方式3状态工作,波特 率为2400。定时/计数器1作波特率发生器时, SMOD=0,计数常数为F4H。
RVE:MOV TMOD,#20H;T1编程为方式2定时状态 MOV TH1,#0F4H;计数常数送T1 MOV TL1,#0F4H SETB TR1;启动T1 MOV R0,#50H MOV R7,#10H;数据长度送R7 MOV SCON,#0D0H;串行口方式3接收 MOV PCON,#00H;置SMOD=0 WAIT:JBC RI,PRI;等待接收到数据 SJMP WAIT
;关闭并行输出
;串行输出 ;状态查询 ;开启并行输出 ;延时 ;清发送中断标志 ;发光组合右移 ;继续
例2
设计一个发送程序,将片内RAM50H~ 5FH中的数据串行发送,串行口设定为方式2状态, TB8作奇偶校验位。在数据写入发送缓冲器之前, 先将数据的奇偶位P写入TB8,这时第9位数据作 奇偶校验用。
发送 器甲
接收 器乙
(a)单工方式
数据流
发送器
数据流
接 收 器
发送器
接 收 器
接 收 器
发送器
接 收 器
数据流
发送器
(b)半双工方式
(b)全双工方式
7.1.3 串行通信的两种基本方式
串行数据通信按数据传送方式可分为异步通信 和同步通信两种形式:
1. 异步通信(Asynchronous Communication)
3. 波特率(baud rate)
波特率为每秒钟传送二进制数码的位数,也叫比特
数,单位是bps(bit per second)或写成b/s(位/ 秒) ,即位/秒。波特率用于表征数据传输的速度,波 特率越高,数据传输速度越快。
例如,异步串行通信的数据传送的速率是120字符/秒,而
每个字符规定包含10位数字,则传输波特率为: 120字符/秒× 10位/字符=1200位/秒= 1200b/s
(3) 接收: RXD 逐位移入SBUF中, TXD 输出移位脉冲, 每接收一帧(8位)数据,RI=1,向CPU 申请中断,RI 需用软件清零。
串行口与并行口转换控制 ① 串入并出移位寄存器74LS164 图(a) ② 并入串出移位寄存器74LS165 图(b)
二、 方式1: 10位UART
(1)功能: 10位异步串行通信方式,波 特率可变, TXD
电源控制寄存器
PCON 位名称 D7 SMOD D6 D5
PCON 87H
D4 D3 GF1 D2 GF0 D1 PD D0 IDL
SMOD:串行口波特率倍增位 =1:串行口波特率加倍。 =0:串行口波特率不变,系统复位时默认 为SMOD=0。
3 . 串行口的工作方式
一、方式0:同步移位寄存器方式
只允许 写
只允许 读
7.2 串行口控制寄存器
串行口控制寄存器
SCON
位地址 D7 D6 D5
SCON 98H
D4 D3 D2 D1 TI 99H D0 RI 98H
SM0 SM1 SM2 REN TB8 RB8 9FH 9EH 9DH 9CH 9BH 9AH
SM2:多机通信控制位(常与RB8配合,决定是否激活RI) REN: 接收控制位。 REN=1,允许接收; REN=0,禁止接收。
方式3波特率的计算与方式1相同 (3) 接收:每接收一帧(11位)有效数据,自动装 载SBUF,第9位进入RB8,RI=1,向CPU 申请中断, RI 需用软件清零。
定时器T1产生的常用波特率
7.2.2 串行口的应用 一、串行口初始化
串行口初始化编程格式: SIO:MOV SCON,#控制状态字;写方式字且TI=RI=0 (MOV PCON,#80H) ;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;开串行口中断 ( SETB ES)
二、发送程序 1. 查询方式:
TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送一个字符 WAIT: JBC TI,NEXT ;等待发送结束 SJMPWAIT NEXT: INC R0 ;准备下一次发送 SJMP TRAM
2.中断方式:
ORG 0023H AJMP SINT MAIN: … TRAM: MOV A,@R0 MOV SBUF,A H: SJMP H SINT: CLR TI INC R0 MOV A,@R0 MOV SBUF,A RETI ;串行口中断入口 ;初始化编程 ;取数据 ;发送第一个字符 ;其它工作 ;中断服务程序 ;取数据 ;发送下一个字符
TB8:发送的第九位数(在方式2Baidu Nhomakorabea方式3中)。 在多通信协议中,该位做奇偶校验位使用。
RB8:接收的第九位数。
在方式2或方式3中:存放接收的第九位数(TB8)。 在方式0中:RB8未使用。 在方式1中:SM2=0,RB8 存放接受到的停止位。 TI :发送中断请求标志位。 TI=1,向CPU申请中断。 RI :接受中断请求标志位。 RI=1,向CPU申请中断。