第7章串行输入输出接口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

接收:监视引脚RXD,一旦出现起始位“0”, 就将外围设备送来的一定格式的串行数 据转换成并行数据,等待CPU读入。
串行口数据缓冲器SBUF
发送数据缓冲器:只能写入,不能读出; 接受数据缓冲器:只能读出,不能写入。 两者共用一个符号—SBUF,共用一个地址—99H。
CPU执行一条写SBUF的指令(如MOV SBUF,A)就启 动了发送过程。
(1)若RI=1,接收数据丢失。 (2)若SM2=1且第九位数据为0,接收数据丢失 (3)其它情况下,8位数据装入SBUF,第九位数
据装入RB8,并置RI=1。
方式2、3的接收时序
7.2.3 多机通讯
TXD
RXD
主机
TXD RXD
8031 0#从机
TXD RXD
TXD RXD
8031

8031
1#从机
MOV R0 ,#40H ;发送数据区首址
MOV R7 ,#10H ;发送字节数
SETB TR1
;启动定时器1
WAIT:JNB RI ,WAIT ;等接收完毕
MOV A,SBUF ;取接收到的字节到A
MOV C,P
;取奇偶标志
JC ERROR
;发现有错,转出错处理程序
ANL A,#7FH ;未出错,去奇偶效验位
返回本节目录
7.2.4 波特率计算
方式0:固定为 fosc /12 方式2:
SMOD=0时为 fosc / 32 SMOD=1时为 fosc / 64 方式1和方式3: 2SMOD 定时器/ 计数器1溢出速率/ 32
例:设串行口工作于方式3,SMOD=0,fosc=11.059MHz,
定时/计数器1工作于定时器方式2(自动重装载方式),
方式1接收时序
方式2及方式3 9位异步通信接口:
➢1帧信息由11位组成。 ➢串行口用于多机通信时必须使用方式2或方 式3。 ➢方式2与方式3仅波特率不同:
方式2波特率固定(SMOD=0时为fosc/64,
SMOD=1时为fosc/32)。
方式3波特率由定时器/计数器1或2的溢出
速率以及SMOD确定。
2)单片机B接收由上题中单片机A发送的ASCII码数据 块,并将接受数据存放在片内RAM 30H-3FH单元。如 果接收的数据奇偶效验有错,置F0标志为1。已知单 片机fosc=6MHz。
各从机CPU响应中断后,通过软件判断主 机送来的是不是本机地址。如果是(01#机), 就使SM2=0;如果不是(除01#机外的所有从机), 保持SM2=1。
接着主机发送数据帧(RB8=0),只有地址 相符的从机(01#机)SM2=0,能接收;其它从机 因SM2=1,数据将丢失。
这样,就实现了主机与指定从机间的一对 一通信。
常用的波特率及计算器初值
返回本节目录
7.3 单片机串行口的应用
一、 串行口方式0用作扩展并行I/O口
输出1个数据的相关程序
MOV SCON, #00H ;串行口方式0初始化
MOV A, #0FFH
;假设输出数据为FFH
CLR P1.0
;关闭并行输出
MOV SBUF, A
;开始串行输出
LOOP: JNB TI, LOOP
之间的远距离通信。
波特率 每秒转送的数据位数。
二、串行通信的两种方式 异步传送方式
空闲
停止位
D0 D1 D2 D3 D4 D5 D6 D7 X 起始位
异步通信典型数据格式
同步传送方式
开始
同步字符 同步字符
数据块
CRC字符#1 CRC字符#2
同步通信的格式
三、数据传送的方向
➢ 单工方式 ➢ 半双工 ➢ 全双工
7.2 MCS-51单片机的串行口
•7.2.1 串行口的功能与结构 •7.2.2 串行口的工作方式 •7.2.3 多机通信 •7.2.4 波特率的计算
7.2.1 串行口功能与结构
MCS-51串行口的基本功能
发送:将CPU送来的并行数据转换成一定格 式的串行数据, 从引脚TXD上按规定的波特率逐位输 出;
#该寄存器地址为98H,可位寻址。
接收中断标志 发送中断标志
接收数据第9位 发送数据第9位
接收控制 0:禁止接收 1:允许接收
多机通信 0:单机对单机 1:多机通信
电源控制寄存器PCON
D7
D6
D5
D0
SMOD — —
ຫໍສະໝຸດ Baidu
D4
D3
D2
D1
— GF1 GF0 PD
IDL
SMOD为波特率系数控制位: SMOD=1时,波特率增大一倍。 复位时,SMOD=0。 PCON的其它各位与串行口无关。
设待接收的数据块共10个字节,接收后拟 存储与片内RAM40-4FH单元;单片机晶振频率、 SMOD位的值、波特率等均同上题。
相应程序:
MOV TMOD,#20H ;定时器1设为方式2
MOV TL1, #0FDH ;定时器初值
MOV TH1, #0FDH ;8位重装值
MOV SCON,#50H ;串行口设为方式1
➢1帧信号发送完毕,发送控制器置发送中断 标志TI=1。
方式1发送时序
接收
➢ 允许接收位REN置1后,跳变检测器开始采
样RXD引脚上的电平。当采样到负跳变, 启动接收控制器接收数据。 ➢ 如果起始位接收到的值不为0,则起始位 无效,复位接收电路。
➢如果起始位为0,则开始接收本帧其它各位 数据。控制器将RXD上的数据逐位移入移位 寄存器,当本帧(8位数据和停止位)全部 移入后: (1)若RI=0,SM2=0,8位数据装入SBUF,停 止位装入RB8,并置RI=1。 (2)若RI=0,SM2=1,只有停止位为1才发生 上述动作。 (3)若RI=0,SM2=1,且停止位为0,接收数 据丢失。 (4)若RI=1,接收数据丢失。
MOV C,P
;取奇偶标志
MOV A.7,C ;加偶效验位
MOV SBUF,A ;启动串行口发送
WAIT:JNB TI ,WAIT ;等发送完毕
CLR TI
;清TI标志
INC R0
;指向下一待发字节地址
DJNZ R7,LOOP ;如拟发字节数未发完,
;继续
RET
例:由串行接口接收带偶效验位的ASCII码数 据块。
INC R0
;指向下一放接收字节地址
DJNZ R7, WAIT ;如拟接收字节数未完,继续
RET 返回目录
作业:
1.单片机A由串行接口发送带奇效验位的ASCII码数据 块。设需发送的数据在片内RAM 30H-3FH单元中, 单 片机fosc=12MHz,发送波特率为1200位/秒。为提高 CPU效率,发送过程中要求采用中断。
#其字节地址为87H,没有位寻址功能。
返回本节目录
7.2.2 串行口的工作方式
有4种工作方式,由SCON中的SM0、SM1确定:
SM0 0 0 1 1
SM1 0 1 0 1
方式 方式0 方式1 方式2 方式3
功能 移位寄存器方式(并行I/O扩展)
8位通用异步接收/发送器 9位通用异步接收/发送器 9位通用异步接收/发送器
;等待串行输出完成
SETB P1.0
;启动并行输出
CLR TI
;清发送中断标志
SETB P1.0
;关闭并行输出
• 点对点的异步通讯
例: 由串行接口发送带偶效验位的ASCII码数 据块。
设拟发送的是片内RAM30-3FH单元的ASCII 码数据,单片机fosc=11.059MHz,设置SMOD=0, 定时器1工作于方式2,发送的波特率为9600位/ 秒,因此TL1、TH1的初值为FDH。
•1帧信息由10位组成(起始位、8位数据、停止 位) •RXD为接收端,TXD为发送端。 •波特率可变,由定时器/计数器1或2的溢出速率以 及SMOD确定;发送和接收波特率可以不同。
发送
➢CPU执行“写SBUF”指令,将并行数据送入 SBUF,启动发送控制器,通过输出控制门 从TXD上逐位输出1帧信号。
波特率 fosc/12 可变 fosc/32或fosc/64 可变
方式0
串行寄存器方式:
•数据从RXD引脚发送或接收;同步移位脉冲从TXD 引脚输出。 • 一帧数据由8位数据组成,低位在前,高位在后,无 起始位和停止位。 • 波特率固定,为fosc/12。 • 主要用于扩展并行I/O口。 • CPU响应TI或RI中断请求时,不会清除TI或RI标志, 必须由用户用软件清0。
当串行口接收到1帧信息后,将数据存入接受数据 缓冲器中。这时,CPU通过执行读SBUF指令(如 MOV A,SBUF),就可获得串行口接收到的数据。
串行口控制寄存器SCON
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
确定串行口 工作方式
串行口的其它工作方式也一样。
发送
✓当1个数据写入发送寄存器SBUF,串行口即 把8位数据以fosc/12的波特率从RXD端送 出(低位在前),同时从TXD上发送同步 移位脉冲。
✓发送完毕停止发送移位脉冲,并置发送中 断标志TI为1。
方式0发送时序
接收
✓REN=0时,禁止接收。 ✓当置REN=1时,从TXD上发送同步移位脉
发送
➢CPU执行“写SBUF”指令,将并行数据送入 SBUF,启动发送控制器,通过输出控制门从 TXD上逐位输出1帧信号,信号的第九位数据 由SCON中的TB8提供。 ➢1帧信号发送完毕,发送控制器置发送中断 标志TI=1。
方式2、3发送时序
接收
➢REN置1后,当跳变检测器采样到RXD引脚上的负跳 变,就启动接收控制器接收数据。 ➢ 如果起始位为0,则开始接收本帧其它各位数据。 控制器将RXD上的数据逐位移入移位寄存器,当本帧 (9位数据和停止位)全部移入后:
冲,该脉冲控制外接芯片逐位输入数据到 RXD端,波特率为fosc/12。 ✓RXD上的串行输入数据逐位移入移位寄存 器。 ✓当8位数据全部移入后, 8位数据从移位寄 存器送入接收数据缓冲器SBUF保存;同时 停止输出移位脉冲,并置接收中断标志 RI=1。
方式0接收时序
方式1
8位异步通信接口方式:
本章内容
7.1 串行通信的基本概念 7.2 MCS-51单片机的串行口 7.3 串行口的应用
学习目的
加深对串行通信基本概念的理解 掌握51单片机串行口的结构、工作方式 了解串行口的应用 掌握串行口初始化编程 掌握发送程序和接收程序的编制
7.1 串行通信的基本概念
一、基本概念
串行通信 是将数据的各位一位一位地依次传送。 适合于计算机之间、计算机与外部设备
n#从机
多机通讯连接示意图
★方式2、3与多机通信
➢ 串行口控制寄存器SCON中的SM2为多机通信接口 控制位。
➢ 串行口以方式2或3接收时,若SM2为1,则仅当 接收到的第9位数据RB8为1时,数据才装入SBUF, 置位RI,请求CPU对数据进行处理;
➢ 当SM2为0时,则接收到一个数据后,不管第9位 数据RB8是0还是1,都将数据装入接收缓冲器 SBUF并置位中断标志RI,请求CPU处理。
根据这个特性,实现主机与多个从机之间的通信。
主机:主导通信。发送的信息有数据帧和地址 帧。地址帧第九位数据TB8=1;数据帧第九位 数据TB8=0。
各从机:通信前初始化SM2=1。
通信:
在主机与某一(如01#)从机通信前,先 发送该从机的地址(01H,TB8=1)。
各从机SM2=1,接收到的地址帧RB8=1, 接收数据有效,置RI=1,向CPU提中断。
TL1、TH1的初值为FDH,试计算波特率。
解:定时器/计数器1定时时间为 TC (256 253) 12/(11.059106)
其溢出速率为 1/TC 11.059106 /(256 253) 12 307194.4
波特率为 20 307194.4 / 32 9599.83 9600(位/ 秒)
相应程序:
MOV TMOD,#20H ;定时器1设为方式2
MOV TL1,#0FDH ;定时器初值
MOV TH1,#0FDH ;8位重装值
MOV SCON,#40H ;串行口设为方式1
MOV R0 ,#30H ;发送数据区首址
MOV R7 ,#10H SETB TR1
;发送字节数 ;启动定时器1
LOOP:MOV A,@R0 ;取待发送字节
相关文档
最新文档