第7章 AT89S51单片机的串行口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•接收时,定时控制信号有两种,一种是接收移位 时钟(RX时钟),它的频率和传送的波特率相同, 另一种是位检测器采样脉冲,频率是RX时钟的16 倍。以波特率的16倍速率采样RXD脚状态。当采样 到RXD端从1到0的负跳变时就启动检测器,接收的 值是3次连续采样(第7、8、9个脉冲时采样)取 两次相同的值,以确认起始位(负跳变)的开始, 较好地消除干扰引起的影响。
L2:
MOV @R0,A;数据→数据缓冲器 INC R0 POP Acc POP PSW ERP: … ;出错处理程序段入口
…
RETI
4.方式3
当SM0SM1=11时,串行口工作在方式3。方式3为 波特率可变的9位异步通信方式,除了波特率外, 方式3和方式2相同。 方式3的波特率由下式确定:
方式3波特率=(2SMOD/32)×定时器 T1的溢出率
约定:
地址帧时TB8为“1”,数据帧时为“0”
5) SCON.2 RB8 接收数据的第9位。 方式2和3,RB8存放接收到第9位数据, 方式1,如SM2=0,RB8接收到停止位, 方式0,不使用RB8. 6) SCON.1 TI 发送中断标志位 方式0,发送完8位数据后,硬件置“1” 其它方式,在发送停止位之初由硬件置位
接收SBUF
MOV
SBUF, A
发送SBUF
1.串行口控制寄存器SCON 该寄存器的字节地址为98H,可位寻址。SCON格 式如图7-6所示。
图7-6 SCON格式
1)
2)
SCON.7和SCON.6 SM0 和SM1 串行方式选择位。 SCON.5 SM2 在方式2和方式3中主要用于多 机通信控制。 方式2和方式3 i)若SM2=1,且接收到第9位RB8=“0”时,RI不置 “1”,不接收主机发来的数据; ii)SM2=1,RB8=1,RI置“1”。产生中断请求, 将接 收到的8位数据送入SBUF. iii)SM2=0,不论RB8为“0”还是为“1”,都将接收到 的8位数据送入SBUF中,置RI=1并中断。
TXD 起 始 D0 D1 D2 D3 D4 D5 D6 D7 停 止
方 式 1 波
发送时,数据从TXD端输出,当数据写入发送 缓冲器SBUF时,就启动发送器发送。发送完 一帧数据后,TI置“1”,申请中断,通知CPU 可以发送下一个数据。
方式1发送时序( TX时钟的频率就是发送的波特率)
TX时钟
返回本节
7.3 波特率的制定方法
SYNC数 据传送速率 的单位
波特率的定义:串行口每秒钟发送(或接收)的位数。
返回本章首页
例:数据传送速率120个字符每秒,每个字符由 1个起始位、8个数据位和1个停止位组成,问波 特率为多少? 120 ×(1+8+1) =1200 b/s=1200 波特 每一位的传送时间为波特率的倒数: t=1/1200=0.833ms
异步通信的传送速度一般为50~9600波特。
1. 方式0和方式2的波特率
1) 方式0,每个机器周期发送或接收一位数据, 因此波特率固定为时钟频率的1/12。 2) 方式2,波特率取决于SMOD.
2SMOD
方式2的波特率=
64
× fosc
2. 方式1和方式3的波特率
串行口方式1和方式3的波特率由定时器T1的溢 出率与SMOD的值决定。 SMOD
D2 D3 D4 D5 D6 D7
TI
方式0接收时序
.
机器周期 写SCON
RXD(数据) TXD (移位脉冲)
D0 D1 D2 D3 D4D5 D6 D7
RI
方式0接收时序
.
机器周期 写SCON
RXD(数据) D0 D1 TXD (移位脉冲)
D2 D3 D4 D5 D6 D7
RI
2.方式1
方式1为双机串行通信方式,如图7-9所示。 串行口为8位通用异步接口。发送或接收一帧数据, 包括一位起始位“0”、8位数据位和1位停止位 “1”,其传送波特率可调。 方式1的帧格式:
2
方式1和方式3 的波特率=
32
× T1溢出率
T1溢出率取决于计数速率和定时器的预置值
计数速率与C/T(TMOD)的状态有关 C/T=0, 计数速率= fosc/12 C/T=1,计数速度取决于外部输入时钟频率
当定时器T1作波特率发生器使用时,通常是 选用自动重装载方式。在方式2中,TL1作计数用, 而自动重装载的值放在TH1内。 设计数初值为X, 那么每过“256 – X”个机器 周期,T1产生一次溢出。
方式2,方式3接收时序
.
TX时钟 RXD 起 始
D0 D1
D2 D3 D4 D5 D6 D7 RB8
停 止
位检测采样 RI
例7.2 方式2接收在双机通信中的应用 若附加的第9位数据为校验位,在接收程序中作 偶校验处理,可采用如下程序(设3组寄存器区的R0 为数据缓冲器指针). PITI:PUSH PSW MOV C,P PUSH Acc JNC L1 JNB RB8,ERP SETB RS0 AJMP L2 SETB RS1 L1: JB RB8,ERP CLR RI MOV A, SBUF
.
写SBUF
SEND 有效 起 始
TXD
D0 D1
D2 D3 D4D5D6D7停 止
TI
方式1发送时序
.
TX时钟 SEND
写SBUF
TXD
起 始
D0 D1
D2 D3 D4 D5 D6 D7 停 止
TI
接收时,数据从RXD(P3.1)引脚输入。使 REN置“1”允许接收,串行口采样引脚RXD. 当 采样到1至0的跳变时,确认是起始位“0”,就开 始接收一帧数据。当停止位到来之后把停止位送 入RB8位,则置位中断标志RI,并申请中断,通 知CPU从SBUF取走接收到的一个数据。
方式1接收时序
.
RX时钟 起 始 D2 D3 D4 D5 D6 D7 停 止
TXD
D0 D1
位检测采样 RI
3.方式2
串行口为9位异步通信接口。发送或接收一帧 信息包括1位起始位“0”、8位数据位、1位可编程 位和1位停止位“1”。其信息传送波特率与SMOD 有关。 发送前,先根据通信协议由软件设置TB8,然 后将要发送的数据写入SBUF即能启动发送器。
返回本节
7.2.2 串行口的工作方式
表7-1 串行口工作方式 返回
1.方式0
该方式并不用于两个AT89S51单片机之间的异步串行
通信,而是用于串行口外接移位寄存器,扩展并行I/O口。
此方式下,串行口作同步移位寄存器用,以8位数据为 一帧,先发送或接收最低位,每个机器周期发送或接收一
位,故其波特率是固定的。
方式2,方式3的帧 格式
TXD 起 始
D0 D1
D2 D3 D4 D5 D6 D7 D8
停 止
方式2波特率=(2SMOD/64) fosc
方式2,方式3发送时序
.
TX时钟 写SBUF SEND TXD 起 始 TI
D0 D1
D2 D3 D4 D5 D6 D7 D8
停 止
例7.1 方式2发送在双机通信中的应用
方式0,SM2应置“0”。 方式1,接收时,若SM2=1,则只有收到有效的 停止位时,RI才置“1”
3) SCON.4 REN 允许串行接收位。 由软件置位或清除。 REN=1 允许接收 REN=0 禁止接收
4) SCON. 3 TB8 发送数据的第9位。 双机通信时可作奇偶校验位。 多机通信时可作区别地址帧或数据帧的标识位。
当一帧数据接收完毕后,同时满足以下两条件,
最后一次移位脉冲才能将前8位数据装入SBUF和
RB8,并置位RI=1。 (1) RI=0,即上一帧数据接收完成时,RI = 1发出 的中断请求已被响应,SBUF中的数据已被取走, 说明“接收SBUF”已空。 (2) SM2=0或接收到的第9位数据为1 若两条不同时满足,则接收到的数据全部丢失, 且不置位RI。
TI=1,可申请中断,也可供软件查询用 但任何方式都必须由软件清除
CLR
TI
7) SCON.0 RI 接收中断标志位 方式0,接收完8位数据后,硬件置位 其它方式,在接收停止位时,由硬件置位。表 示一帧数据接收完毕,此时可要求CPU从接收 SBUF取走数据。
RI=1,可申请中断,也可供软件查询用 但任何方式都必须由软件清除
返回本章首页
7.2.1 串行口的结构
AT89S51单片机内部的串行口,有两个物理 上独立地接收、发送缓冲器SBUF, 可同时接收、 发送数据,发送缓冲器只能写入不能读出,接收 缓冲器只能读出不能写入。结构图
这两个缓冲器共用一个字节地址99H.
例:
判断使用的是发送SBUF还是接收SBUF? MOV A, SBUF
下面为发送中断服务程序,在双机通信中,以 TB8为奇偶校验位,处理方法为数据写入SBUF之 前,先将数据的奇偶校验位写入TB8(设工作寄存 器区2的R0作为发送数据区地址指针).偶检验
PIPT1: PUSH PSW PUSH Acc SETB RS1 CLR RS0 CLR TI MOV A,@R0
图7-5 同步通信方式及数据格式
思考题: 同步通信和异步通信来传送数据块,一般来 说哪个速度快,为什么? 同步通信数据块传送时去掉了字符开始和结 束的标志,所以其速度高于异步传送,但这种方 式对硬件结构要求较高。
7.2 AT89S51单片机的串行口
•7.2.1 串行口的结构 •7.2.2 串行口的工作方式
第7章 串行通信及其接口
•7.1 概述 •7.2 AT89S51的串行口 •7.3 波特率的制定方法 •7.4 多机通信
•7.5 串行口的编程和应用
7.1 概述
串行通信是将数据的各位一位一位地依次传送。 适合于计算机之间、计算机与外部设备之间的远 距离通信。 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。 串行通信从接收方式有两种方式: 异步通信方式、同步通信方式。
返回本章首页
接收器 发送器
图7-1 单工方式示意图
接收和发送不能同 时进行,只能分时 发送和接收
数据流
发送器
接收器
接收器
发送器
图7-2 半双工方式示意图
数据流 发送器
数据的发送和 接收可以同时 进行
接收器
接收器
发送器
图7-3 全双工方式示意图
总结:
不管哪种形式的串行通信,在两机 之间均应有共地线。
CLR
RI
2.特殊功能寄存器PCON •其字节地址为87H,没有位寻址功能。PCON的格式如图 7-7所示,其中与串行接口有关的只有D7位。SMOD是串 行口波特率倍增位。其他各位的功能已在第2章的节电工 作方式一节中作过介绍。
图7-7 PCON格式 方式1波特率 = 2SMOD 定时器T1的溢出率 32
串行数据由RXD(P3.0)输入或输出 同步移位脉冲由TXD(P3.1)输出
这种方式常用于扩展I/O口. 举例proteus 程序
方式0发送时序
.
机器周期 写SBUF
RXD(数据) TXD (移位脉冲)
D0 D1 D2 D3 D4D5 D6 D7
TI
Байду номын сангаас
方式0发送时序
.
机器周期 写SBUF
RXD(数据) D0 D1 TXD (移位脉冲)
从起始位开始到停止 位结束就构成了完整 的一帧。
图7-4 异步串行通信数据格式
异步通信时可能会出现帧格式错、超时错等传输错误。 在具有串行口的单片机的开发中,应考虑在通信过程 中对数据差错进行校验,因为差错校验是保证准确无 误通信的关键。 1)奇偶校验 2)和校验 3)循环冗余码校验
同步通信SYNC 在同步通信中,发送器和接收器由同一个时 钟源控制。 数据或字符开始处是用一同步字符来 指示,以实现发送端和接收端同步,一旦检测到 约定同步字符,就连续按顺序接收数据。
MOV MOV MOV INC POP POP RETI
C, P TB8, C SBUF, A R0 Acc PSW
方式2和方式3的接收:
数据由RXD端输入,REN=1时接收器开始采样 RXD的电平,检测到RXD由高到低的负跳变时,启 动接收器接收。 若满足以下两条件,最后一次移位脉冲才能将前 8位数据装入SBUF和RB8,并置位RI=1。 (1) RI=0 (2) SM2=0或接收到的第9位数据为1 若两条不同时满足,则接收到的数据全部丢失,且 不置位RI。
•异步通信ASYNC 在异步通信方式中,接收器和发送器有各自 的时钟,它们的工作是非同步的。 在异步通信中数据或字符是以帧形式传送的。 最常见的帧格式一般是先用一位起始位“0”表示 字符的开始;然后是5~8位数据,低位在前,高位 在后;其后是校验位,此位用于判别字符传送的 正确性;最后是停止位,用以表示字符的结束, 停止位可以是1 ~2个停止位。