当前位置:
文档之家› 第7章 89C51串行口及串行通信技术
第7章 89C51串行口及串行通信技术
① 单工传送:只允许数据按照一个 固定的方向传送。
② 半双工传送:只有1根线传送数据 信号,要求通讯双方的发送和接 收由电子开关切换。由于只有一 条信道,所以数据不能同时在两 个方向上传送。
③ 全双工传送:通讯双方能同时进 行发送和接收操作
#4
五、串行通信的两种类型 1. 异步通信
第 n字 符 帧
计 算机 1
发送 接收
计 算机 2 或 外设
…
GN D
GN D
GN D
GN D
并行(a通) 信
串行(b)通信
注意:“串行”是指外设与接口电路之间的信息传送方式, CPU与接口之间仍按并行方式工作。
二、信息传输的检错和纠错
➢ 串行数据在传输过程中,由于干扰可能引起信息的出错 如何发现传输中的错误,叫检错 发现错误后,如何消除错误,叫纠错
➢ 一帧字符发送/接收完,置位标志位(TI/RI)并申请中断 ➢ 中断控制:中断允许位ES ➢ 中断入口:0023H
4. 含两个收、发数据缓冲器SBUF(共用一个地址99H ) ➢ 发送SBUF放待发的8位数据,写入SBUF便启动发送。
发送指令: MOV SBUF,A ➢ 接收SBUF放已成功接收的8位数据,供CPU读取。
装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据, 不置位RI
3. 方式2和方式3: 11位异步通讯方式。
➢ 一帧11位:起位+9位数据位+停位。 ➢ 第9位数据位在TB8/RB8中,常作校验位或多机通讯标识位 ➢ 波特率: 方式2:B=(2SMOD/64)×fosc 。
方式3:B=(2SMOD/32)×T1溢出率 ➢ 发送:先填写TB8,写入SBUF(启动发送),发送完TI=1。 ➢ 接收:REN=1,RI=0且第9位为1 (或SM2=0),将接收数据装
工作方式 方式0 方式1 方式2 方式3
功能 8位同步移位寄存器
10位UART 11位UART 11位UART
波特率
fosc/12 可变
fosc/64或fosc/32 可变
1. 方式0:8位同步移位寄存器(用于I/O扩展) ➢ 一帧8位,无起、停位。 ➢ RXD:数据输入/输出端。 ➢ TXD:同步脉冲输出端,每个脉冲对应一个数据位。 ➢ 波特率B = fosc/12,如:fosc=12MHz,B=1MHz,每位数据1s。 ➢ 发送过程:写入SBUF(启动发送),一帧发送完,TI=1。 ➢ 接收过程:REN=1且RI=0,启动接收,一帧接收完,RI=1。
第7章 89C51串行口及串行通信技术
7-1 串行通信基本知识 7-2 89C51串行口及应用
7-1 串行通信基本知识
一、数据通信 在计算机系统中,CPU和外部通信有两种形式:
➢ 并行通信,即数据的各位同时传送; ➢ 串行通信,即数据一位一位顺序传送。
数据的各位同时传送
计 算机 1
计 算机 2 或 外设
六、串行接口必须具备的功能
串行接口电路的种类和型号很多。 ➢ 能够完成异步通信的硬件接口电路称为UART,即通用异步接
收器/发送器。 ➢ 能够完成同步通信的硬件接口电路称为USRT。即通用同步接
收器/发送器。 ➢ 既能够完成异步又能同步通信的硬件接口电路称为USART。
所有这些串行接口电路都必须具备如下的基本功能:
例1:用串行口方式0扩展8位并行I/O输出口。
74HC164实现:串行→并行的数据转换
例2:用串行口方式0扩展8位并行I/O输入口。
74HC165实现:并行→串行的数据转换
2. 方式1:10位异步通讯方式。
➢ 一帧10位:起位+8位数据位+停位。 ➢ 波特率:用T1作波特率发生器,B=(2SMOD/32)×T1溢出率。 ➢ 发送:写入SBUF(启动发送),一帧发送完,TI=1。 ➢ 接收:REN=1,RI=0且停止位为1 (或SM2=0),将接收数据
读取指令: MOV A,SBUF
5. 串行口控制寄存器SCON(98H)
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 SM1 SM2 REN TB8 RB8 TI RI
➢ SM0,SM1:串口4种工作方式选择。
SM0 SM1 00 01 10 11
工作方式 方式0 方式1 方式2 方式3
① 发送器:并串数据转换,添加标识位和校验位,设置发送 结束标志,申请中断。
② 接收器:串并数据转换,检查错误,去掉标识位,保存有 效数据,设置接收结束标志,申请中断。
③ 控制器:接收编程命令和控制参数,设置工作方式:同步/异 步、字符格式、波特率、校验方式、数据位与同步时钟比例 等。
7-2 89C51串行口及应用
ORG 0000H
LJMP MAIN
ORG 0023H
AJMP SBR
ORG 0030H
MAIN: MOV SCON,#00H
SETB EA
SETB ES
SETB P1.0
MOV A,#80H
MOV SBUF,A
SJMP $
SBR: CLR TI
ACALL DELAY
RR
A
MOV SBUF,A
RETI
• 在方式2,3处于接收或发送方式时,若SM2=0,不论接收到 的第9位RB8为0还是1,TI、RI都以正常方式被激活。
• 在方式1处于接收时,若SM2=1,则只有收到有效的停止位后, RI置1。
• 在方式0中,SM2应为0。
SM0 SM1 SM2 REN TB8 RB8 TI RI
➢ REN:允许接收控制位,=1允许接收;=0禁止接收。
第 n+ 1字 符 帧
… 0/1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1 0 D0 D1 …
起
8位 数 据
奇偶 停
始
校验 止
位
无空闲位(a)字符帧
位
第 n字 符 帧
空闲位
第 n+ 1字 符 帧
… 1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1 1 1 1 0 D0 D1 …
起
8位 数 据
奇偶 停
始 位
有空闲位字符帧
校验 止 位
一个字符一个字符地传输,每个字符一位一位地传输,传输 一个字符时,以起始位开始,然后传输字符本身各位,接着传输 校验位,最后以停止位结束该字符传输。一次传输的起始位、字 符各位、校验位、停止位构成一个字符帧(数据帧)信息。
第 n字 符 帧
第 n+ 1字 符 帧
… 0/1 1
0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1
起
8位 数 据
奇偶 停
始
校验 止
位
无空闲位(a)字符帧
位
0 D0 D1 …
第 n字 符 帧
空闲位
第 n+ 1字 符 帧
… 1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1 1 1 1 0 D0 D1 …
DELAY: ׃
;主程序入口 ;串口中断服务程序入口
;串口方式0初始化
注
;CPU开中
意
;串口开中
:
;74HC164的CLR=1,保持有移位输出 ;输出80H,最左一位先亮
书 上
;踏步等中断 ;清发送标志
程 序
;调用延时子程序,亮一段时间
有
;点亮下一位
错
;中断返回 ;延时子程序(根据点亮时间编制)
异步通信的优点是不需要传送同步时钟,字符帧长度不受限 制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低 了有效数据的传输速率。
2. 同步通信
同步字符 字符1 字符2
……
字符n 校验字符
数据块
➢ 在每组信息的开始,加上同步字符,靠同步字符完成收发双 方同步的。
➢ 多个字符成组传送。 ➢ 同步字符和字符组以及需要的其他字符构成一个信息帧。
6. 电源控制寄存器PCON(87H),未包含在串口框图中。
SMOD X
X
X GF1 GF0 PD IDL
➢ SMOD波特率加倍控制位。=1波特率加倍,=0则不加倍。
二、89C51串行通信工作方式
89C51的串行口有4种工作方式,通过SCON中的SM0、SM1位 来决定。
SM0 SM1 00 01 10 11
入SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不 置位RI。
4. 关于波特率的计算:
① 方式0为固定波特率:B=fosc/12 ② 方式2可选两种波特率: B=(2SMOD /64)×fosc ③ 方式1、3为可变波特率,用T1作波特率发生器。
B=(2SMOD/32)×T1溢出率 在方式1,3下,波特率由T1溢出率和SMOD共同决定。实际 上,当T1做波特率发生器时,通常工作在模式2下,即自动重装 载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。
T1模2溢出时间: t (28 X)T (28 X) 12
fosc
方式1,3下的波特率:
B
2SMOD 32
fosc 12(2 8 X)T1Βιβλιοθήκη 出率1 t
12
fosc (28
X)
T1模2定时初值:
X 28 2SMOD fosc 32 12 B
定时器1产生的常用波特率
波特率/(b/s)
fosc/MHz
SMOD
方式0:1
12
×
方式2:375 k
12
1
方式1、3:62.5k
12
1
19.2 k
11.059
1
9.6 k
11.059
0
4.8 k