单片机串行接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接收允许
第7章 串Байду номын сангаас接口
电源控制寄存器PCON ( 87H )
(MSB)
LSB
SMOD
---
---
---
GF1
GF0
PD
IDL
PCON格式
第7章 串行接口
7.3 波特率的设计
串行口每秒钟发送或接收的数据位数称为波特率。 假设
发送一位数据所需时间为T, 则波特率为 1/T。 SM0 SM1
0 0 1 1 0 1 0 1
MOV R2, #10H ; 数据长度
LOOP: MOV A, @R0 ; 取发送数据
MOV C, P ; 奇偶位送TB8
MOV TB8, C
MOV SBUF, A ; 送串口并开始发送数据
第7章 串行接口
WAIT: JBCTI, NEXT ; 检测是否发送结束并清TI SJMP WAIT
第7章 串行接口
7 串行接口
教学目标及要求:
1 了解串行通信的基本原理 2 熟悉单片机串行通信的4种工作方式及波特率的设置
主要内容:
1 2 3 4 5 串行通信概述 80C51串行口简介 波特率的设计 串行通信工作方式 串行口应用举例
教学重点和难点:
重点熟悉单片机串行通信4种工作方式的设置及三种帧格式, 难点掌握单片机串行通信方式0用于I/O扩展输入输出。
第7章 串行接口
2 SMOD 模式1或3的波特率 T 1的溢出率 32 2 SMOD fOSC 32 12 ( 256 TH 1)
第7章 串行接口
表 7-1 定时器T1产生的常用波特率
第7章 串行接口
假设某MCS - 51 单片机系统, 串行口工作于模式 3, 要求 传送波特率为1200 Hz, 作为波特率发生器的定时器T1工作在
第7章 串行接口
作业:
P141
1、3、6
参考书目
1、张友德编《单片微型机原理、应用与实验》(第三版),复旦大学出版社
2、张迎新《单片微机原理》(初级),北航出版社
接收控制器 8
接收 SBUF ( 99H ) 8 输入移位寄存器
RXD(P3.0)
图7-3 串行口结构图
第7章 串行接口
数据缓冲器SBUF 内部RAM字节地址是 99H。在物理上, 它对应着两个独 立的寄存器, 一个发送寄存器, 一个接收寄存器。 发送: 就是CPU写入 SBUF 接收:就是读取 SBUF 的过程 , 接收寄存器是双缓冲的 , 以避免在接收下一帧数据之前 , CPU 未能及时响应接收器的 中断, 没有把上一帧数据读走, 而产生两帧数据重叠的问题。
移位脉冲的控制下, 接收完后,置中断标志RI,并申请中断。
第7章 串行接口
模式 2 和模式 3 数据结构是 11 位的: 最低位是起始位(0), 其后是 8 位 数据位(低位在先) , 第 10 位是用户定义位( SCON 中的 TB8或 RB8)
第7章 串行接口
7.4.5 多机通信
图 7-6 多机通信连接图
2 SMOD 模式2的波特率 晶振频率 64
第7章 串行接口
(3) 模式 1 和模式 3 的波特率除了与SMOD位有关之外, 还与定时器 T1 的溢出率有关。
定时器 T1 作为波特率发生器, 常选用定时方式 2( 8 位 重装载初值方式), 并且禁止 T1 中断。此时 TH1 从初值计 数到产生溢出, 它每秒钟溢出的次数称为溢出率。
的时间间隔, 但帧与帧之间的时间间隔是随机的。
基本特征:每个字符必须用起始位和停止位作为字符开 始和结束的标志, 它是以字符为单位一个个地发送和接收的。
第7章 串行接口
8
发送 SBUF ( 99H )
门 发送控制器 串 行 控 制 寄 存 器
98H
TXD(P3.1)
定 时 器 T1
串行口中断
+
TI RI
第7章 串行接口
1k
第7章 串行接口
MOV SCON,#00H CLR TI MOV SBUF,#00000110B TRANSMIT_LP1: JNB TI,TRANSMIT_LP1 CLR TI MOV SCON,#00H CLR TI MOV SBUF,#010100011B TRANSMIT_LP2: JNB TI,TRANSMIT_LP2 CLR TI
第7章 串行接口
7.1 串行通信概述
( 1 ) 同步通信:是将一大批数据分成几个数据块, 数据块 之间用同步字符予以隔开 , 而传输的各位二进制码之间都没 有间隔。 基本特征:发送与接收时钟始终保持严格同步。
( 2 ) 异步通信:是按帧传送数据, 它利用每一帧的起、止
信号来建立发送与接收之间的同步,每帧内部各位均采用固定
47 k
第7章 串行接口
CLR P1.2 CLR P1.2 SETB P1.2 SETB P1.2 CLR RI CLR RI MOV SCON,#10H MOV SCON,#10H RECEIVE_LP2: RECEIVE_LP1: JNB TI,RECEIVE_LP2 JNB RI,RECEIVE_LP1 CLR RI CLR RI MOV R1,SBUF MOV R0,SBUF
第7章 串行接口
例 2 利用串行口进行双机通信。
第7章 串行接口
方式 0 输入状态
第7章 串行接口
方式 0 输入状态
第7章 串行接口
甲机发送(采用查询方式): MOV SCON, #80H ; 设置工作方式2 MOV PCON, #00; 置SMOD=0, 波特率不加倍 MOV R0, #40H ; 数据区地址指针
fOSC/12 可变(T1溢出率) fOSC/64 或fOSC/32 可变(T1溢出率)
第7章 串行接口
方式0
…
D0 D1 D2 D3 D4 D5 D6 D7 …
方式1
0 D0 D1 D2 D3 D4 D5 D6 D7
起始
1 …
停止
…
0 D0 D1 D2 D3 D4 D5 D6 D7 D8
起始
1 …
NEXT: INC R0; 修改发送数据地址指针
DJNZR2, LOOP RET 乙机接收(查询方式): MOV SCON, #90H; 模作模式2, 并允许接收
MOV PCON, #00H; 置SMOD=0
MOV R0, #60H ; 置数据区地址指针 MOV R2, #10H ; 等待接收数据长度
第7章 串行接口
串行口控制寄存器 SCON
(MSB)
LSB
SM0 SM1 SM2 REN TB0
RB0
TI
RI
SCON格式
第7章 串行接口
SM0 SM1 0 0 1 1 0 1 0 1
工作方式 0 1 2 3
功 能 8位同步移位寄存器 10 位UART 11 位UART 11 位UART
波
特
率
工作方式
0 1 2 3
功 能
8位同步移位寄存器 10 位UART 11 位UART 11 位UART
波
特
率
fOSC/12 可变(T1溢出率) fOSC/64 或fOSC/32 可变(T1溢出率)
第7章 串行接口
(1) 模式 0 的波特率等于单片机晶振频率的 1/12, 即每个 机器周期接收或发送一位数据。 (2) 模式 2 的波特率与电源控制器PCON的最高位SMOD 的写入值有关: SMOD=0, 波特率为(1/64) fOSC; SMOD=1, 波特率为(1/32)fOSC。
第7章 串行接口
(01H)从机: SM2=0 主机: TB8 = 0
其它从机: SM2=1,RB8 = 0(不产生中断即不响应)
第7章 串行接口
主机: TB8 = 1,SBUF= 从机号(01H)
从机: SM2=1,RB8 = 1,比较SBUF 从机号(XXH)
第7章 串行接口
7.5 串行口的应用
当SMOD=0 时, 初值TH1=256-6×106/(1 200×12×32/1)
=243=0F3H
当SMOD=1 时, 初值TH1=256-6×106/(1200×12×32/2) =230=0E6H
第7章 串行接口
7.4 串行通信工作方式
方式 0 输出状态
第7章 串行接口
方式 0 输入状态
第7章 串行接口
模式 1 发送过程: 用软件清除 TI 后, 当数据写入SBUF时,就启动发送过
程。数据由 TXD 引脚输出, 发送完时, 将置位发送中断标志 TI =1, 向CPU申请中断, 完成一次发送过程。
第7章 串行接口
模式 1 接收过程: 用软件清除 RI 后, 当允许接收位 REN 被置位 1 时, 接收 器以选定波特率的 16 倍的速率采样 RXD 引脚上的电平, 当 检测到有从“1”到“0”的负跳变时, 则启动接收过程, 在接收
停止
方式2/3
第7章 串行接口
方式0: 8 位数据,不设起始位和停止位 方式2/3: D8 可编程位(TB8/RB8),由软件置“1“或 清”0”, 可用作检验位,也可作它用.
第7章 串行接口
SM2: 在方式2和方式3中用于多机通信控制接收 0 不接收主机发来的数据 1 SM2 且RB8 1 接收主机发来的数据 0 不论RB8=1/0 都接收数据 REN:
方式 2 时, 请求出计数初值为多少? 设单片机的振荡频率为
6 MHz。 因为串行口工作于模式 3 时的波特率为
2SMOD fOSC 模式3的波特率 32 12 (256 TH1)
fOSC 所以 TH 1 256 SMOD 波特率 12 (32 / 2 )
第7章 串行接口
第7章 串行接口
SM2: 在方式2和方式3中用于多机通信控制接收 0 不接收主机发来的数据 1 SM2 且RB8 1 接收主机发来的数据 0 不论RB8=1/0 都接收数据
图 7-6 多机通信连接图
第7章 串行接口
主机: TB8 = 1,SBUF= 从机号(01H)
从机: SM2=1,RB8 = 1,比较SBUF 从机号(XXH)
第7章 串行接口
LOOP: JBC RI, READ ; 等待接收数据并清RI SJMP LOOP READ: MOV A, SBUF ; 读一帧数据 MOV C, P JNC LP0 ; C不为 1 转LP0 JNB RB8, ERR ; RB8=0, 即 RB8不为 P转ERR AJMP LP1 LP0: JB RB8, ERR ; RB8=1, 即 RB8不为 P转ERR LP1: MOV @R0, A ; RB8=P, 接收一帧数据 INC R0 DJNZ R2, LOOP RET ERR: … ; 出错处理程序