第11章 C51串行接口程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.1 51系列单片机的串行接口
• 51系列单片机内部集成的全双工串行通信接口电 路,常称为UART。该串行接口电路功能很强,不 仅可以进行串行异步数据的发送和接收,也可以 作为一个同步移位寄存器使用。
11.1.1 单片机串行通信概述
• 单片机和外部设备可以采用并行通信和串行通信两种方法进行数据传输。 这两种数据传输方式分别如图所示。其中,并行通信是指数据的各个二进 制位同时进行传输。并行通信传输速度快,效率高,缺点是需要比较多的 数据线,易受外界干扰,传输距离不能太远。串行通信是指数据的各个二 进制位按照顺序一位一位地进行传输。串行通信所需的数据线少,节省硬 件成本以及单片机的引脚资源,并且抗干扰能力强,适合于远距离数据传 输,其缺点是每次发送一个比特,导致传输速度慢,效率比较低。
11.4 串行口工作模式2的C51程序设计
• 串行口的工作模式模式2为固定波特率的串行异步 通信方式,在模式2中数据帧的格式,如图所示。 一帧数据由11位构成,按照顺序分别为:起始位1 位、8位串行数据(低位在前)、可编程位1位、 停止位1位。在程序中可以设置控制寄存器SCON的 SM0=1和SM1=0来实现。
并行数据输入 8051单片机
RXD TXD P2.2
Q8 CLK
P/S
CD4014
扩展并行输入口
11.3 串行口工作模式1的C51程序设计
• 串行口的工作模式1是波特率可变的串行异步通信 方式,工作模式1下数据帧的格式,如图11.10所 示。数据帧由10位组成,按顺序分别为起始位、8 位数据位、停止位。数据在传输时,低位在前, 高位在后。在程序中可以设置控制寄存器SCON的 SM0=0和SM1=1来将串口设置为工作模式1。
9600
19200 62500
11.0592
11.0592 12
0
1 1
2
2 2
FDH
FDH FFH
11.5.2 模式3的数据发送及C51程序设计
• 在串行口的工作模式3中,单片机的TXD引脚为数 据发送端。模式3的发送共有9位有效的数据,在 启动发送之前,需要将发送的第9位,即可编程位 的数值送入寄存器SCON中的TB8位。这个编程标志 位可以由用户自己定义,硬件不做任何规定。例 如,用户可以将这一位定义为奇偶校验位或地址/ 数据标志位。 • 1.模式3的数据发送流程 • 2.采用查询方式的模式3数据发送C51程序设计 • 3.采用中断方式的模式3数据发送C51程序设计
11.5.3 模式3的数据接收及C51程序设计
• 串口的工作模式3是11位异步发送接收方式,单片 机RXD引脚为数据接收端。模式3的串行数据接收 过程和模式2基本类似。 • 1.模式3的数据接收流程 • 2.采用查询方式的模式3数据接收C51程序设计 • 3.采用中断方式的模式3数据接收C51程序设计
11.3.2 模式1的数据发送及C51程序设计
• 串行口的工作模式1为10位异步发送接收方式,单 片机TXD引脚为数据发送端。通信的双方不需要时 钟同步,发送方和接收方都有自己的移位脉冲, 通过设置共同的波特率来实现同步。 • 1.模式1的数据发送流程 • 2.采用查询方式的模式1数据发送C51程序设计 • 3.采用中断方式的模式1数据发送C51程序设计
11.4.3 模式2的数据接收及C51程序设计
• 串口的工作模式2是11位异步发送接收方式,单片 机RXD引脚为数据接收端。模式2的串行数据接收 过程和模式1基本类似,只不过模式1的第9位为停 止位,而这里则是发送的可编程位。 • 1.模式2的数据接收流程 • 2.采用查询方式的模式2数据接收C51程序设计 • 3.采用中断方式的模式2数据接收C51程序设计
低位在前,高位在后
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
0/1
停止位
模式2的帧格式
11.4.1 模式2的波特率
• 串口的工作模式2是11位异步发送接收方式。模式2下的波特率的 计算公式如下: • 模式2波特率= fosc·2SMOD/64 • 从公式中可以看出,在模式2下,波特率由单片机的振荡频率fosc 和PCON的波特率倍增位SMOD共同决定。当SMOD=0时,波特率为 fosc/64,当SMOD=1时,波特率为fosc/32。串口模式2的波特率不由 定时器来设置,只可选两种:fosc/32或者fosc/64。 • 例如,如果8051单片机外接12MHz的晶振,通过寄存器PCON可以选 择波特率。在C51程序中,则可以采用如下的赋值语句来实现,示 例如下: • PCON=0x00; //设 置SMOD=0 • PCON=0x80; //设 置SMOD=1
D7 PCON: SMOD
D6 -
D5 -
D4Baidu Nhomakorabea-
D3 GF1
D2 GF0
D1 PD
D0 IDL
字节地址:87H 不可位寻址
PCON的格式
11.2 串行口工作模式0的C51程序设计
• 51系列单片机串行口的工作模式0是同步移位寄存 器输入/输出方式,模式0的数据帧格式,如图所 示。从图中可以看出,模式0中的数据以8位为一 帧,没有起始位和停止位,发送时低位在前,高 位在后。在程序中可以设置控制寄存器SCON的 SM0=0和SM1=0来将串行口设置为工作模式0。
串口模式3常用波特率参数设置 fosc(MHz) SMOD值 定时器T1工作模 式 初值
•
波特率(bit/s)
110
110 137.5 1200 2400 4800
6
12 11.986 11.0592 11.0592 11.0592
0
0 0 0 0 0
2
2 2 2 2 2
72H
FEEBH 1DH E8H F4H FAH
D7 SCON:
D6
D5
D4
D3
D2 RB8
D1 TI
D0 RI
字节地址:98H 可位寻址
SM0 SM1 SM2 REN TB8
串行接口控制寄存器SCON
11.1.4 特殊功能寄存器PCON
• 特殊功能寄存器PCON的格式,如图所示。PCON的 单元字节地址为87H,不可以进行位寻址。特殊功 能寄存器PCON用于CHMOS型单片机中进行电源控制, 也称为电源控制寄存器。下面分别介绍各位的含 义。
• 51系列单片机的全双工串行口主要由数据发送缓 冲器、发送控制器TI和接收控制器RI等组成,其 结构如图所示。
内部8051 CPU总线
SBUF (99H) 发送缓冲器 波 特 率 发 生 器 TI 接收缓冲器 SBUF (99H)
移位寄存器
TXD(P3.1)
发送控制器TI 串行口中断
接收控制器RI
11.4.2 模式2的数据发送及C51程序设计
• 在串行口的工作模式2中,TXD引脚为数据发送端。 模式2的发送共有9位有效的数据,在启动发送之 前,需要将发送的第9位,即可编程位的数值送入 寄存器SCON中的TB8位。这个编程标志位可以由用 户自己定义,硬件不做任何规定。例如,用户可 以将这一位定义为奇偶校验位或地址/数据标志位。 • 1.模式2的数据发送流程 • 2.采用查询方式的模式2数据发送C51程序设计 • 3.采用中断方式的模式2数据发送C51程序设计
低位在前,高位在后
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
0/1
停止位
模式3的帧格式
11.5.1 模式3的波特率
• • 模式3和模式2的工作方式是一样的,不同的是,模式2仅有两个固定的波 特率可选,而模式3的波特率由定时器1的溢出率和波特率倍增位SMOD决定。 串口的工作模式3为11位异步发送接收方式。其串行移位时钟脉冲由定时 器T1的溢出率来决定,因此,波特率由定时器T1的溢出率和SMOD来共同决 定。模式1和模式3的波特率计算公式如下: 模式3波特率=T1溢出率·2SMOD/32
11.2.2 模式0的数据发送及C51程序设计
• 对于模式0的数据发送,单片机的TXD引脚都用于 发送同步移位脉冲,而8位串行数据是通过单片机 的RXD引脚来输出。 • 1.模式0的数据发送流程 • 2.采用查询方式的模式0数据发送C51程序设计 • 3.采用中断方式的模式0数据发送C51程序设计
低位在前,高位在后
……
D0
D1
D2
D3
D4
D5
D6
D7
……
串行工作模式0的数据帧格式
11.2.1 模式0的波特率
• 8051单片机在串口模式0下,每个机器周期产生一 个移位时钟,对应着一个比特数据的发送和接收。 因此,此时波特率固定为8051单片机振荡频率的 1/12,其波特率的计算公式如下: • 串口模式0波特率=fosc/12 • 例如,对于24MHz的外部晶体振荡频率,模式0可 以获得24MHz /12=2Mbit/s的波特率。 • 同时,在串口模式0下,波特率不受波特率倍增位 SMOD的影响。因此,在C51程序设计时只要指定串 口工作于模式0便完成了串口速率的设置,而无需 再设置波特率。
单 片 机 1
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P1.0 P1.1 P1.2 单 P1.3 片 P1.4 机 P1.5 2 P1.6 P1.7
单 片 机 1 TXD 发送 RXD 接收
单 片 机 接收 RXD 2 发送 TXD
单片机并行通信
单片机串行通信
11.1.2 单片机串行接口的内部结构
串 行 控 制 寄 存 器 (98H) RXD(P3.2)
移位寄存器
单片机串行口内部结构
11.1.3 串行接口控制寄存器SCON
• 串行控制寄存器SCON的格式及各位的含义,如图 所示。控制寄存器SCON的字节地址为98H,可进行 位寻址。该寄存器用于选择串行通信的工作方式 和某些控制功能,包括接收/发送控制及设置状态 标志等。下面分别介绍各位的用途。
11.3.3 模式1的数据接收及C51程序设计
• 串行口的工作模式1为10位异步发送接收方式,单片机RXD 引脚为数据接收端。模式1接收数据中的定时信号可以有两 种,接收移位脉冲和接收字符的检测脉冲。 • 串行口模式1接收数据时的接收移位脉冲,由定时器1的溢 出信号和波特率倍增位SMOD来共同决定,即由定时器1的溢 出率经过16分频或32分频得到。 • 接收字符的检测脉冲,其频率是接收移位脉冲的16倍。在 接收一位数据的时候,有16个检测脉冲,以其中的第7、8 和9个脉冲作为真正的接收信号的采样脉冲。对这三次采样 结果采取三中取二的原则来确定所检测到的值。由于采样 的信号总是在接收位的中间位置,这样便可以抑制干扰, 避免信号两端的边沿失真,也可以防止由于通信双方时钟 频率不完全相同而带来的接收错误。
低位在前,高位在后。
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
停止位
……
模式1的帧格式
11.3.1 模式1的波特率
• 串口的工作模式1为10位异步发送接收方式。其串 行移位时钟脉冲由定时器T1的溢出率来决定,因 此,波特率由定时器T1的溢出率和波特率倍增位 SMOD来共同决定。模式1的波特率计算公式如下: • 模式1波特率=T1溢出率·2SMOD/32 • 设置模式1的波特率,需要对定时器T1进行工作方 式设置,以便于得到需要的波特率发生器。一般 使T1工作于模式2,此时为初值自动加载的定时方 式。如果计数器的初始值为X,则每过256-X个机 器周期的时候,定时器T1便将产生一次溢出,溢 出的周期为(256-X)*12/fosc。
并行数据输出 8051单片机
RXD TXD P2.1
DATA CLK STB
CD4094
扩展并行输出口
14.2.3 模式0的数据接收及C51程序设计
• 对于模式0的数据接收,单片机的TXD引脚都用于 发送同步移位脉冲,而8位串行数据是通过RXD引 脚来输入。 • 1.模式0的数据接收流程 • 2.采用查询方式模式0数据接收的C51程序设计 • 3.采用中断方式模式0数据接收的C51程序设计
11.5 串行口工作模式3的C51程序设计
• 串行口的工作模式模式3为11位异步发送接收方式, 在模式3中数据帧的格式,如图所示。一帧数据由 11位构成,按照顺序分别为:起始位1位、8位串 行数据(低位在前)、可编程位1位、停止位1位。 在程序中可以设置控制寄存器SCON的SM0=1和 SM1=1来实现。
• 51系列单片机内部集成的全双工串行通信接口电 路,常称为UART。该串行接口电路功能很强,不 仅可以进行串行异步数据的发送和接收,也可以 作为一个同步移位寄存器使用。
11.1.1 单片机串行通信概述
• 单片机和外部设备可以采用并行通信和串行通信两种方法进行数据传输。 这两种数据传输方式分别如图所示。其中,并行通信是指数据的各个二进 制位同时进行传输。并行通信传输速度快,效率高,缺点是需要比较多的 数据线,易受外界干扰,传输距离不能太远。串行通信是指数据的各个二 进制位按照顺序一位一位地进行传输。串行通信所需的数据线少,节省硬 件成本以及单片机的引脚资源,并且抗干扰能力强,适合于远距离数据传 输,其缺点是每次发送一个比特,导致传输速度慢,效率比较低。
11.4 串行口工作模式2的C51程序设计
• 串行口的工作模式模式2为固定波特率的串行异步 通信方式,在模式2中数据帧的格式,如图所示。 一帧数据由11位构成,按照顺序分别为:起始位1 位、8位串行数据(低位在前)、可编程位1位、 停止位1位。在程序中可以设置控制寄存器SCON的 SM0=1和SM1=0来实现。
并行数据输入 8051单片机
RXD TXD P2.2
Q8 CLK
P/S
CD4014
扩展并行输入口
11.3 串行口工作模式1的C51程序设计
• 串行口的工作模式1是波特率可变的串行异步通信 方式,工作模式1下数据帧的格式,如图11.10所 示。数据帧由10位组成,按顺序分别为起始位、8 位数据位、停止位。数据在传输时,低位在前, 高位在后。在程序中可以设置控制寄存器SCON的 SM0=0和SM1=1来将串口设置为工作模式1。
9600
19200 62500
11.0592
11.0592 12
0
1 1
2
2 2
FDH
FDH FFH
11.5.2 模式3的数据发送及C51程序设计
• 在串行口的工作模式3中,单片机的TXD引脚为数 据发送端。模式3的发送共有9位有效的数据,在 启动发送之前,需要将发送的第9位,即可编程位 的数值送入寄存器SCON中的TB8位。这个编程标志 位可以由用户自己定义,硬件不做任何规定。例 如,用户可以将这一位定义为奇偶校验位或地址/ 数据标志位。 • 1.模式3的数据发送流程 • 2.采用查询方式的模式3数据发送C51程序设计 • 3.采用中断方式的模式3数据发送C51程序设计
11.5.3 模式3的数据接收及C51程序设计
• 串口的工作模式3是11位异步发送接收方式,单片 机RXD引脚为数据接收端。模式3的串行数据接收 过程和模式2基本类似。 • 1.模式3的数据接收流程 • 2.采用查询方式的模式3数据接收C51程序设计 • 3.采用中断方式的模式3数据接收C51程序设计
11.3.2 模式1的数据发送及C51程序设计
• 串行口的工作模式1为10位异步发送接收方式,单 片机TXD引脚为数据发送端。通信的双方不需要时 钟同步,发送方和接收方都有自己的移位脉冲, 通过设置共同的波特率来实现同步。 • 1.模式1的数据发送流程 • 2.采用查询方式的模式1数据发送C51程序设计 • 3.采用中断方式的模式1数据发送C51程序设计
11.4.3 模式2的数据接收及C51程序设计
• 串口的工作模式2是11位异步发送接收方式,单片 机RXD引脚为数据接收端。模式2的串行数据接收 过程和模式1基本类似,只不过模式1的第9位为停 止位,而这里则是发送的可编程位。 • 1.模式2的数据接收流程 • 2.采用查询方式的模式2数据接收C51程序设计 • 3.采用中断方式的模式2数据接收C51程序设计
低位在前,高位在后
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
0/1
停止位
模式2的帧格式
11.4.1 模式2的波特率
• 串口的工作模式2是11位异步发送接收方式。模式2下的波特率的 计算公式如下: • 模式2波特率= fosc·2SMOD/64 • 从公式中可以看出,在模式2下,波特率由单片机的振荡频率fosc 和PCON的波特率倍增位SMOD共同决定。当SMOD=0时,波特率为 fosc/64,当SMOD=1时,波特率为fosc/32。串口模式2的波特率不由 定时器来设置,只可选两种:fosc/32或者fosc/64。 • 例如,如果8051单片机外接12MHz的晶振,通过寄存器PCON可以选 择波特率。在C51程序中,则可以采用如下的赋值语句来实现,示 例如下: • PCON=0x00; //设 置SMOD=0 • PCON=0x80; //设 置SMOD=1
D7 PCON: SMOD
D6 -
D5 -
D4Baidu Nhomakorabea-
D3 GF1
D2 GF0
D1 PD
D0 IDL
字节地址:87H 不可位寻址
PCON的格式
11.2 串行口工作模式0的C51程序设计
• 51系列单片机串行口的工作模式0是同步移位寄存 器输入/输出方式,模式0的数据帧格式,如图所 示。从图中可以看出,模式0中的数据以8位为一 帧,没有起始位和停止位,发送时低位在前,高 位在后。在程序中可以设置控制寄存器SCON的 SM0=0和SM1=0来将串行口设置为工作模式0。
串口模式3常用波特率参数设置 fosc(MHz) SMOD值 定时器T1工作模 式 初值
•
波特率(bit/s)
110
110 137.5 1200 2400 4800
6
12 11.986 11.0592 11.0592 11.0592
0
0 0 0 0 0
2
2 2 2 2 2
72H
FEEBH 1DH E8H F4H FAH
D7 SCON:
D6
D5
D4
D3
D2 RB8
D1 TI
D0 RI
字节地址:98H 可位寻址
SM0 SM1 SM2 REN TB8
串行接口控制寄存器SCON
11.1.4 特殊功能寄存器PCON
• 特殊功能寄存器PCON的格式,如图所示。PCON的 单元字节地址为87H,不可以进行位寻址。特殊功 能寄存器PCON用于CHMOS型单片机中进行电源控制, 也称为电源控制寄存器。下面分别介绍各位的含 义。
• 51系列单片机的全双工串行口主要由数据发送缓 冲器、发送控制器TI和接收控制器RI等组成,其 结构如图所示。
内部8051 CPU总线
SBUF (99H) 发送缓冲器 波 特 率 发 生 器 TI 接收缓冲器 SBUF (99H)
移位寄存器
TXD(P3.1)
发送控制器TI 串行口中断
接收控制器RI
11.4.2 模式2的数据发送及C51程序设计
• 在串行口的工作模式2中,TXD引脚为数据发送端。 模式2的发送共有9位有效的数据,在启动发送之 前,需要将发送的第9位,即可编程位的数值送入 寄存器SCON中的TB8位。这个编程标志位可以由用 户自己定义,硬件不做任何规定。例如,用户可 以将这一位定义为奇偶校验位或地址/数据标志位。 • 1.模式2的数据发送流程 • 2.采用查询方式的模式2数据发送C51程序设计 • 3.采用中断方式的模式2数据发送C51程序设计
低位在前,高位在后
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
0/1
停止位
模式3的帧格式
11.5.1 模式3的波特率
• • 模式3和模式2的工作方式是一样的,不同的是,模式2仅有两个固定的波 特率可选,而模式3的波特率由定时器1的溢出率和波特率倍增位SMOD决定。 串口的工作模式3为11位异步发送接收方式。其串行移位时钟脉冲由定时 器T1的溢出率来决定,因此,波特率由定时器T1的溢出率和SMOD来共同决 定。模式1和模式3的波特率计算公式如下: 模式3波特率=T1溢出率·2SMOD/32
11.2.2 模式0的数据发送及C51程序设计
• 对于模式0的数据发送,单片机的TXD引脚都用于 发送同步移位脉冲,而8位串行数据是通过单片机 的RXD引脚来输出。 • 1.模式0的数据发送流程 • 2.采用查询方式的模式0数据发送C51程序设计 • 3.采用中断方式的模式0数据发送C51程序设计
低位在前,高位在后
……
D0
D1
D2
D3
D4
D5
D6
D7
……
串行工作模式0的数据帧格式
11.2.1 模式0的波特率
• 8051单片机在串口模式0下,每个机器周期产生一 个移位时钟,对应着一个比特数据的发送和接收。 因此,此时波特率固定为8051单片机振荡频率的 1/12,其波特率的计算公式如下: • 串口模式0波特率=fosc/12 • 例如,对于24MHz的外部晶体振荡频率,模式0可 以获得24MHz /12=2Mbit/s的波特率。 • 同时,在串口模式0下,波特率不受波特率倍增位 SMOD的影响。因此,在C51程序设计时只要指定串 口工作于模式0便完成了串口速率的设置,而无需 再设置波特率。
单 片 机 1
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P1.0 P1.1 P1.2 单 P1.3 片 P1.4 机 P1.5 2 P1.6 P1.7
单 片 机 1 TXD 发送 RXD 接收
单 片 机 接收 RXD 2 发送 TXD
单片机并行通信
单片机串行通信
11.1.2 单片机串行接口的内部结构
串 行 控 制 寄 存 器 (98H) RXD(P3.2)
移位寄存器
单片机串行口内部结构
11.1.3 串行接口控制寄存器SCON
• 串行控制寄存器SCON的格式及各位的含义,如图 所示。控制寄存器SCON的字节地址为98H,可进行 位寻址。该寄存器用于选择串行通信的工作方式 和某些控制功能,包括接收/发送控制及设置状态 标志等。下面分别介绍各位的用途。
11.3.3 模式1的数据接收及C51程序设计
• 串行口的工作模式1为10位异步发送接收方式,单片机RXD 引脚为数据接收端。模式1接收数据中的定时信号可以有两 种,接收移位脉冲和接收字符的检测脉冲。 • 串行口模式1接收数据时的接收移位脉冲,由定时器1的溢 出信号和波特率倍增位SMOD来共同决定,即由定时器1的溢 出率经过16分频或32分频得到。 • 接收字符的检测脉冲,其频率是接收移位脉冲的16倍。在 接收一位数据的时候,有16个检测脉冲,以其中的第7、8 和9个脉冲作为真正的接收信号的采样脉冲。对这三次采样 结果采取三中取二的原则来确定所检测到的值。由于采样 的信号总是在接收位的中间位置,这样便可以抑制干扰, 避免信号两端的边沿失真,也可以防止由于通信双方时钟 频率不完全相同而带来的接收错误。
低位在前,高位在后。
……
起始位
D0
D1
D2
D3
D4
D5
D6
D7
停止位
……
模式1的帧格式
11.3.1 模式1的波特率
• 串口的工作模式1为10位异步发送接收方式。其串 行移位时钟脉冲由定时器T1的溢出率来决定,因 此,波特率由定时器T1的溢出率和波特率倍增位 SMOD来共同决定。模式1的波特率计算公式如下: • 模式1波特率=T1溢出率·2SMOD/32 • 设置模式1的波特率,需要对定时器T1进行工作方 式设置,以便于得到需要的波特率发生器。一般 使T1工作于模式2,此时为初值自动加载的定时方 式。如果计数器的初始值为X,则每过256-X个机 器周期的时候,定时器T1便将产生一次溢出,溢 出的周期为(256-X)*12/fosc。
并行数据输出 8051单片机
RXD TXD P2.1
DATA CLK STB
CD4094
扩展并行输出口
14.2.3 模式0的数据接收及C51程序设计
• 对于模式0的数据接收,单片机的TXD引脚都用于 发送同步移位脉冲,而8位串行数据是通过RXD引 脚来输入。 • 1.模式0的数据接收流程 • 2.采用查询方式模式0数据接收的C51程序设计 • 3.采用中断方式模式0数据接收的C51程序设计
11.5 串行口工作模式3的C51程序设计
• 串行口的工作模式模式3为11位异步发送接收方式, 在模式3中数据帧的格式,如图所示。一帧数据由 11位构成,按照顺序分别为:起始位1位、8位串 行数据(低位在前)、可编程位1位、停止位1位。 在程序中可以设置控制寄存器SCON的SM0=1和 SM1=1来实现。