第6章串行接口09
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接收操作:当RI=0,软件置REN为1时,串行口采样RXD, 确认串行数据的起始位后开始接收一帧数据,直到停止位 的到来。若SM2初始清零,则接收到停止位后硬件置RI=1, 可以从SBUF中读取接收数据;若SM2初始置1,则只有接收 到有效停止位后硬件置RI=1。
6.3.3 方式2和方式3 11位异步通信接口。发送或接收一帧信息包括l位起 始位“0” 、8位数据位、1位可编程位TB8/RB8和1位停 止位“1”。 方式2波特率与SMOD有关,方式3波特率取决于T1溢出 率。 发送操作:发送前,先根据通信协议由软件设置TB8 (如作奇偶校验位或地址/数据标识位),然后执行任 何一条以SBUF作为目的寄存器的写指令即启动发送器, 同时TB8自动装到发送移位寄存器的第9位位置上 ,从 TXD端输出一帧数据 ,发送完毕,TI标志=1。 多机通信中,TB8=1为地址帧; TB8=0为数据帧。
图6-2 一种11位异步通信的帧格式
2 . 同步通信SYNC 用一同步字符来指示通信的开始(常约定1~ 2个),以实现发送端和接收端的同步 。
图6-3 一种同步通信的帧格式 6.1.2 串行通信的数据传送速率 在串行通信中数据传送速率的单位用波特率 (Baud rate)表示,其意义是每秒钟传送多少 位二进制数。
RECV: MOV CLR SETB JNB MOV CLR RET TMOD,# data RI REN RI, $ A,SBUF RI
6.2.2 串行口寄存器 1)串行口的接收/发送缓冲区SBUF:是两个独立 的物理空间,只能字节寻址。 2)串行口控制寄存器SCON :串行口工作方式的 设置和数据传输的控制,可位寻址。
在方式1中,当处于接收时,若SM2=1,则只有收 到有效的停止位时,RI才置1。 在方式0中,SM2应置0。 REN:允许串行接收位。由软件置位或清除。REN=1 时,允许接收;REN=0时,禁止接收。 TB8:发送数据的第9位。在方式2或方式3中,根据需 要由软件置位或复位。在多机通信中可作为区别地址 帧或数据帧的标识位,一般约定地址帧时TB8为1,数 据帧时TB8为0。双机通信时它可作奇偶校验位。 RB8:接收数据的第9位。在方式2或方式3中,双机通 信是奇偶位,多机通信是地址/数据标识位。 TI:发送中断标志位。发送完一帧数据后由硬件置位, 必须由软件来清除 。 RI:接收中断标志位。接受完一帧数据后由硬件置位, 必须由软件来清除 。
接收操作:先置位REN为1,使串行口处于允许接收 状态,同时还要将RI清0。在满足这个条件的前提下, 再根据SM2的状态和所接收到的RB8的状态决定是否 会使RI置1,并申请中断,接收数据。 当SM2=0时,不管RB8为0还是为1,RI都置1,此 串行口将接收发来的信息。 当SM2=1,且RB8为l时,表示在多机通信情况 下,接收的信息为地址帧,此时RI置1。串行口将接 收发来的地址。 当SM2=1,且RB8为0时,表示接收的信息为数 据帧,但不是发给本从机的,此时RI不置1,因而 SBUF中所接收的数据帧将丢失。
解:根据波特率计算T1的时间常数,T1工作在方式2。 设SMOD=0,已知波特率2400,由(2)式计算出T1的 时间常数 X=F4H
甲机发送子程序 SENT: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H SETB TR1 MOV SCON,#0C0H MOV PCON,#00H MOV R0,#50H MOV R7,#l0H
6.2.4 波特率的设置 1)方式0和方式2的波特率 在方式0时,每个机器周期发送或接收一位数 据,因此波特率固定为时钟频率的1/12 。
2 SMOD 64
方式2的波特率=
百度文库
× f osc
2) 方式1和方式3的波特率 方式1和方式3 方式l和方式3的波特率由定时器T1的溢出率与SMOD值 SMOD 决定 2 方式1和方式3的波特率= × T1溢出率 32 定时器T1作波特率发生器使用时,通常是选用 自动重装载方式,即方式2。在方式2中,TL1作计 数用,而自动重装载的值放在TH1内,设计数初值 为X,那么每过256-X个机器周期,定时器1就会产 生一次溢出。为了避免因溢出而产生不必要的中断, 此时应禁止T1中断。
例3、由AT89S51作为甲机和乙机的双机异步通信的连接 线路见图6-9。已知fOSC =11.0592MHz,采用定时器1 方式2作波特率发生器,波特率要求为2400,则定时器 初始预置值TH1=TL1=0F4H 。 编程把甲机片内RAM 40H~4FH单元中的数据块从串行口输出到乙机,并存 入乙机片外300H~30FH单元。接收过程中要求判奇偶 校验标志RB8。若出错置F0标志为1;若正确置F0标志 为0,然后返回,要求采用工作方式3发送和接收。
SM0 SM0 0 0 1 1
SM1 SM1 0 1 0 1
SM2
REN
TB8 功能
RB8
TI
RI 波特率
工作方式 方式0 方式1 方式2 方式3
fosc/12 8位同步移位寄存器 10位UART 可设置 11位UART fosc/64和fosc/32 11位UART 可设置
SM0、SM1:串行方式选择位
6.3.4 多机通信
图6-6多机通信连接图
6.4 串行口应用举例
例1、用并行输入8位移位寄存器74HC165扩展8位并
行输入口。编程实现从8位扩展口读入10个字节数据, 并把它们转存到内部RAM的60H~69H中。 解:在此采用74HC165与单片机相接实现I/O口扩展, 单片机与74HC165的具体接线图见图6-7。
图6-8 利用串行口扩展输出接口
按题意编程如下: ST: MOV SCON,#00H ;设串行口方式0 MOV A,#55H ;二极管间隔点亮初值 LP2:MOV R0,#2 ;输出口字节数 CLR P1.0 ;对74HC164清零,熄灭发光二极管 SETB P1.0 ;允许数据串行移位 LP1: MOV SBUF,A ;启动串行口发送 JNB TI,$ ;等待一帧发送结束 CLR TI ;清串行口发送中断标志 DJNZ R0,LP1 ;判预定字节数发送完否 LCALL DEL2s ;调延时2s子程序(略) CPL A ;交替点亮二极管 SJMP LP2 ;循环显示
并行通信与串行通信 并行通信:所传送数据的各位同时发送或接收 。 串行通信:所传送数据的各位按顺序一位一位地发送或接收。
图6-1基本通信方式图示
6.1.1 同步通信和异步通信方式
1 . 异步通信ASYNC
数据或字符是以固定的帧格式一帧(Frame)一帧 地传送 ,从起始位、数据位到停止位就构成 完 整的一帧,不同的 系统定义有不同的帧格式。
6.2
6.2.1
80C51串行口简介 80C51串行口简介
串行口结构与工作原理
80C51的串行口是一个可编程的全双工 串行通信接口,通过软件编程它可以做通 用异步接收和发送器UART(Universal Asynchronous Receiver/Transmitter), 也可做同步移位寄存器用。其帧格式可设 置8位、10位或11位,并能设置不同的波特 率 。
6.1.3
串行通信的方式
单工:只允许单方向传送,只需一条数据线。 半双工 :接收和发送分时双向进行,只需一条数据线。 全双工 :甲、乙两机之间数据的发送和接收可以同时 进行,通信必须使用二根数据线 。
图6-4
通信方式示意图
6.1.4 通信协议 计算机之间进行数据传输时的一些约定,包括通信方 式、帧格式、波特率、命令码的约定等 。
图 6-5 串行口结构框图
串行口组成:两个数据缓冲寄存器SBUF、一个输 入移位寄存器、波特率发生器以及串行控制寄存 器SCON等组成 。 串行口的接收发送操作:首先对串行口初始化。 发送时CPU写SBUF ,一方面修改发送寄存器,同 时启动数据串行发送到TXD端,发送完毕后置标 志位TI;接受时置允许接收位才开始接受操作, 接受完毕置位RI,这时CPU可以读SBUF,即读接 收到的数据。
第6章 UART串行接口 UART串行接口
教学目的:了解80C51系列单片机UART串行接口的结 构、原理及应用;能够采用查询方式进行串行通信。 教学重点:1. UART串行接口的工作原理; 2. UART串行接口的4种工作方式的编 程、应用。 教学难点:1 .多机通信方式 2. 波特率值的设置
6.1 串行通信概述
图6-7 利用串行口扩展输入接口
按题意编程如下: MOV R7,#10 MOV R0,#60H RCV0: CLR P1.0 SETB P1.0 MOV SCON,#10H JNB RI,$ CLR RI MOV A,SBUF MOV @R0,A INC R0 DJNZ R7,RCV0 … … …
3) 电源控制寄存器PCON PCON的最高位SMOD是串行口波特率倍 增位。当SMOD=1时,波特率加倍,复位 时,SMOD=0 。直接地址为87 H,不可 位寻址。 - SMOD - -
6.2.3 80C51的帧格式 80C51的帧格式
80C51串行口通过编程可设置4种工作方式,三 种帧格式。 方式0以8位数据为一帧,不设起始位和停 止位,先发送或接收最低位。 方式1以10位为一帧传输,设有一个起始位 “0”,8个数据位和一个停止位“1”。 方式2和3以11位为一帧传输,设有1个起始 位“0”,8个数据位,1个可编程位(第九数据 位)D8和1个停止位“1”。
溢出周期为:
12 (256 X ) FOSC
波特率为溢出周期之倒数,所以
FOSC 2 SMOD 波特率 = × 32 12 × (256 X )
f OSC × (SMOD + 1) T 1时常数 X = 256 波特率 × 384
(1) (2)
6.3 串行通信工作方式
6.3.1 方式0 用作同步移位寄存器,以8位数据为一帧, 发送/接收低位在先,数据由RXD(P3.0)端输 . 入或输出,同步移位脉冲由TXD(P3.l)端送 . 出,波特率固定为 fosc/12。这种方式常用 于扩展I/O 口。
;设置读入字节数 ;设片内RAM指针 ;允许并行置入数据 ;允许串行移位 ;设串行口方式0 并启动接收 ;等待接收一帧数据 ;清接收中断标志 ;取缓冲器数据 ;保存数据 ;判是否已读入预定的字节数 ;对读入数据进行处理
例2.用两片8位串入并出移位寄存器74HC164扩展16 .用两片8位串入并出移位寄存器74HC164扩展16 位输出接口。图6 是利用74HC164(也可选用其他同 位输出接口。图6-8是利用74HC164(也可选用其他同 样功能的CMOS器件)扩展的16位发光二极管接口电路。 样功能的CMOS器件)扩展的16位发光二极管接口电路。 编程使这16个发光二极管交替为间隔点亮状态,循环 编程使这16个发光二极管交替为间隔点亮状态,循环 交替时间为2 交替时间为2秒钟。
SM2:在方式2和方式3中主要用于多机通信控制。当串行 口以方式2或方式3 接收时,若SM2=1,且接收到 第9位RB8为0时,则RI不置“1”,不接收主机发来 的数据;若SM2=1,且RB8为1时,RI置“1”,并 将接收到的8位数据送SBUF。若SM2=0时,则不 论RB8为0还是为1,都将收到的8位数据送入SBUF 中,并置RI为“1” 。
发送操作:数据写入发送缓冲寄存器SBUF (99H),串行口即把数据以设定的波特率从 TXD端送出(低位在前), 发送完后置中断标 志TI=1。 MOV TMOD, #data MOV SBUF, #data JNB TI, $ CLR TI RET
接收操作:REN是串行口接收器允许接收控制位。 当RI=0,软件置REN为1时,即开始从RXD端以设定 的波特率输入数据(低位在前), 当接收到数据 时,置中断标志RI=1。
6.3.2 方式1 串行口为10位通用异步接口。数据帧格式为l位起 始位“0”,8位数据位和1位停止位“1” 。波特率 由指令设置,T1溢出率决定。 发送操作:当数据写入发送缓冲器SBUF时,就启 动发送器发送数据从引脚TXD端输出。当发送完一 帧数据后,TI标志=1,并申请中断,通知CPU可以 发送下一个数据。
6.3.3 方式2和方式3 11位异步通信接口。发送或接收一帧信息包括l位起 始位“0” 、8位数据位、1位可编程位TB8/RB8和1位停 止位“1”。 方式2波特率与SMOD有关,方式3波特率取决于T1溢出 率。 发送操作:发送前,先根据通信协议由软件设置TB8 (如作奇偶校验位或地址/数据标识位),然后执行任 何一条以SBUF作为目的寄存器的写指令即启动发送器, 同时TB8自动装到发送移位寄存器的第9位位置上 ,从 TXD端输出一帧数据 ,发送完毕,TI标志=1。 多机通信中,TB8=1为地址帧; TB8=0为数据帧。
图6-2 一种11位异步通信的帧格式
2 . 同步通信SYNC 用一同步字符来指示通信的开始(常约定1~ 2个),以实现发送端和接收端的同步 。
图6-3 一种同步通信的帧格式 6.1.2 串行通信的数据传送速率 在串行通信中数据传送速率的单位用波特率 (Baud rate)表示,其意义是每秒钟传送多少 位二进制数。
RECV: MOV CLR SETB JNB MOV CLR RET TMOD,# data RI REN RI, $ A,SBUF RI
6.2.2 串行口寄存器 1)串行口的接收/发送缓冲区SBUF:是两个独立 的物理空间,只能字节寻址。 2)串行口控制寄存器SCON :串行口工作方式的 设置和数据传输的控制,可位寻址。
在方式1中,当处于接收时,若SM2=1,则只有收 到有效的停止位时,RI才置1。 在方式0中,SM2应置0。 REN:允许串行接收位。由软件置位或清除。REN=1 时,允许接收;REN=0时,禁止接收。 TB8:发送数据的第9位。在方式2或方式3中,根据需 要由软件置位或复位。在多机通信中可作为区别地址 帧或数据帧的标识位,一般约定地址帧时TB8为1,数 据帧时TB8为0。双机通信时它可作奇偶校验位。 RB8:接收数据的第9位。在方式2或方式3中,双机通 信是奇偶位,多机通信是地址/数据标识位。 TI:发送中断标志位。发送完一帧数据后由硬件置位, 必须由软件来清除 。 RI:接收中断标志位。接受完一帧数据后由硬件置位, 必须由软件来清除 。
接收操作:先置位REN为1,使串行口处于允许接收 状态,同时还要将RI清0。在满足这个条件的前提下, 再根据SM2的状态和所接收到的RB8的状态决定是否 会使RI置1,并申请中断,接收数据。 当SM2=0时,不管RB8为0还是为1,RI都置1,此 串行口将接收发来的信息。 当SM2=1,且RB8为l时,表示在多机通信情况 下,接收的信息为地址帧,此时RI置1。串行口将接 收发来的地址。 当SM2=1,且RB8为0时,表示接收的信息为数 据帧,但不是发给本从机的,此时RI不置1,因而 SBUF中所接收的数据帧将丢失。
解:根据波特率计算T1的时间常数,T1工作在方式2。 设SMOD=0,已知波特率2400,由(2)式计算出T1的 时间常数 X=F4H
甲机发送子程序 SENT: MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H SETB TR1 MOV SCON,#0C0H MOV PCON,#00H MOV R0,#50H MOV R7,#l0H
6.2.4 波特率的设置 1)方式0和方式2的波特率 在方式0时,每个机器周期发送或接收一位数 据,因此波特率固定为时钟频率的1/12 。
2 SMOD 64
方式2的波特率=
百度文库
× f osc
2) 方式1和方式3的波特率 方式1和方式3 方式l和方式3的波特率由定时器T1的溢出率与SMOD值 SMOD 决定 2 方式1和方式3的波特率= × T1溢出率 32 定时器T1作波特率发生器使用时,通常是选用 自动重装载方式,即方式2。在方式2中,TL1作计 数用,而自动重装载的值放在TH1内,设计数初值 为X,那么每过256-X个机器周期,定时器1就会产 生一次溢出。为了避免因溢出而产生不必要的中断, 此时应禁止T1中断。
例3、由AT89S51作为甲机和乙机的双机异步通信的连接 线路见图6-9。已知fOSC =11.0592MHz,采用定时器1 方式2作波特率发生器,波特率要求为2400,则定时器 初始预置值TH1=TL1=0F4H 。 编程把甲机片内RAM 40H~4FH单元中的数据块从串行口输出到乙机,并存 入乙机片外300H~30FH单元。接收过程中要求判奇偶 校验标志RB8。若出错置F0标志为1;若正确置F0标志 为0,然后返回,要求采用工作方式3发送和接收。
SM0 SM0 0 0 1 1
SM1 SM1 0 1 0 1
SM2
REN
TB8 功能
RB8
TI
RI 波特率
工作方式 方式0 方式1 方式2 方式3
fosc/12 8位同步移位寄存器 10位UART 可设置 11位UART fosc/64和fosc/32 11位UART 可设置
SM0、SM1:串行方式选择位
6.3.4 多机通信
图6-6多机通信连接图
6.4 串行口应用举例
例1、用并行输入8位移位寄存器74HC165扩展8位并
行输入口。编程实现从8位扩展口读入10个字节数据, 并把它们转存到内部RAM的60H~69H中。 解:在此采用74HC165与单片机相接实现I/O口扩展, 单片机与74HC165的具体接线图见图6-7。
图6-8 利用串行口扩展输出接口
按题意编程如下: ST: MOV SCON,#00H ;设串行口方式0 MOV A,#55H ;二极管间隔点亮初值 LP2:MOV R0,#2 ;输出口字节数 CLR P1.0 ;对74HC164清零,熄灭发光二极管 SETB P1.0 ;允许数据串行移位 LP1: MOV SBUF,A ;启动串行口发送 JNB TI,$ ;等待一帧发送结束 CLR TI ;清串行口发送中断标志 DJNZ R0,LP1 ;判预定字节数发送完否 LCALL DEL2s ;调延时2s子程序(略) CPL A ;交替点亮二极管 SJMP LP2 ;循环显示
并行通信与串行通信 并行通信:所传送数据的各位同时发送或接收 。 串行通信:所传送数据的各位按顺序一位一位地发送或接收。
图6-1基本通信方式图示
6.1.1 同步通信和异步通信方式
1 . 异步通信ASYNC
数据或字符是以固定的帧格式一帧(Frame)一帧 地传送 ,从起始位、数据位到停止位就构成 完 整的一帧,不同的 系统定义有不同的帧格式。
6.2
6.2.1
80C51串行口简介 80C51串行口简介
串行口结构与工作原理
80C51的串行口是一个可编程的全双工 串行通信接口,通过软件编程它可以做通 用异步接收和发送器UART(Universal Asynchronous Receiver/Transmitter), 也可做同步移位寄存器用。其帧格式可设 置8位、10位或11位,并能设置不同的波特 率 。
6.1.3
串行通信的方式
单工:只允许单方向传送,只需一条数据线。 半双工 :接收和发送分时双向进行,只需一条数据线。 全双工 :甲、乙两机之间数据的发送和接收可以同时 进行,通信必须使用二根数据线 。
图6-4
通信方式示意图
6.1.4 通信协议 计算机之间进行数据传输时的一些约定,包括通信方 式、帧格式、波特率、命令码的约定等 。
图 6-5 串行口结构框图
串行口组成:两个数据缓冲寄存器SBUF、一个输 入移位寄存器、波特率发生器以及串行控制寄存 器SCON等组成 。 串行口的接收发送操作:首先对串行口初始化。 发送时CPU写SBUF ,一方面修改发送寄存器,同 时启动数据串行发送到TXD端,发送完毕后置标 志位TI;接受时置允许接收位才开始接受操作, 接受完毕置位RI,这时CPU可以读SBUF,即读接 收到的数据。
第6章 UART串行接口 UART串行接口
教学目的:了解80C51系列单片机UART串行接口的结 构、原理及应用;能够采用查询方式进行串行通信。 教学重点:1. UART串行接口的工作原理; 2. UART串行接口的4种工作方式的编 程、应用。 教学难点:1 .多机通信方式 2. 波特率值的设置
6.1 串行通信概述
图6-7 利用串行口扩展输入接口
按题意编程如下: MOV R7,#10 MOV R0,#60H RCV0: CLR P1.0 SETB P1.0 MOV SCON,#10H JNB RI,$ CLR RI MOV A,SBUF MOV @R0,A INC R0 DJNZ R7,RCV0 … … …
3) 电源控制寄存器PCON PCON的最高位SMOD是串行口波特率倍 增位。当SMOD=1时,波特率加倍,复位 时,SMOD=0 。直接地址为87 H,不可 位寻址。 - SMOD - -
6.2.3 80C51的帧格式 80C51的帧格式
80C51串行口通过编程可设置4种工作方式,三 种帧格式。 方式0以8位数据为一帧,不设起始位和停 止位,先发送或接收最低位。 方式1以10位为一帧传输,设有一个起始位 “0”,8个数据位和一个停止位“1”。 方式2和3以11位为一帧传输,设有1个起始 位“0”,8个数据位,1个可编程位(第九数据 位)D8和1个停止位“1”。
溢出周期为:
12 (256 X ) FOSC
波特率为溢出周期之倒数,所以
FOSC 2 SMOD 波特率 = × 32 12 × (256 X )
f OSC × (SMOD + 1) T 1时常数 X = 256 波特率 × 384
(1) (2)
6.3 串行通信工作方式
6.3.1 方式0 用作同步移位寄存器,以8位数据为一帧, 发送/接收低位在先,数据由RXD(P3.0)端输 . 入或输出,同步移位脉冲由TXD(P3.l)端送 . 出,波特率固定为 fosc/12。这种方式常用 于扩展I/O 口。
;设置读入字节数 ;设片内RAM指针 ;允许并行置入数据 ;允许串行移位 ;设串行口方式0 并启动接收 ;等待接收一帧数据 ;清接收中断标志 ;取缓冲器数据 ;保存数据 ;判是否已读入预定的字节数 ;对读入数据进行处理
例2.用两片8位串入并出移位寄存器74HC164扩展16 .用两片8位串入并出移位寄存器74HC164扩展16 位输出接口。图6 是利用74HC164(也可选用其他同 位输出接口。图6-8是利用74HC164(也可选用其他同 样功能的CMOS器件)扩展的16位发光二极管接口电路。 样功能的CMOS器件)扩展的16位发光二极管接口电路。 编程使这16个发光二极管交替为间隔点亮状态,循环 编程使这16个发光二极管交替为间隔点亮状态,循环 交替时间为2 交替时间为2秒钟。
SM2:在方式2和方式3中主要用于多机通信控制。当串行 口以方式2或方式3 接收时,若SM2=1,且接收到 第9位RB8为0时,则RI不置“1”,不接收主机发来 的数据;若SM2=1,且RB8为1时,RI置“1”,并 将接收到的8位数据送SBUF。若SM2=0时,则不 论RB8为0还是为1,都将收到的8位数据送入SBUF 中,并置RI为“1” 。
发送操作:数据写入发送缓冲寄存器SBUF (99H),串行口即把数据以设定的波特率从 TXD端送出(低位在前), 发送完后置中断标 志TI=1。 MOV TMOD, #data MOV SBUF, #data JNB TI, $ CLR TI RET
接收操作:REN是串行口接收器允许接收控制位。 当RI=0,软件置REN为1时,即开始从RXD端以设定 的波特率输入数据(低位在前), 当接收到数据 时,置中断标志RI=1。
6.3.2 方式1 串行口为10位通用异步接口。数据帧格式为l位起 始位“0”,8位数据位和1位停止位“1” 。波特率 由指令设置,T1溢出率决定。 发送操作:当数据写入发送缓冲器SBUF时,就启 动发送器发送数据从引脚TXD端输出。当发送完一 帧数据后,TI标志=1,并申请中断,通知CPU可以 发送下一个数据。