单片机的串行口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• RB8 —— 接收串行输入数据的第 9
在方式2和方式3中是接收的第9位数据。
• •
TI —— 串行口中发送完一组数据后的中断标志 若串口发送完一组数据,则由硬件自动置 TI = 1 若串口还要发数据,则应手动编程使 TI = 0 RI —— 串行口中接收完一组数据后的中断标志
• 若串口接收完一组数据,则由硬件自动置 RI = 1 • 若串口还要收数据,则应手动编程使 RI = 0
• 接收器是双缓冲结构,在前面一字节被从接收缓冲器 SBUF读出之前,第二字节即开始被接收(串行输入 至移位寄存器)但是,在第二字节接收完毕而前一字 节CPU未读取时,会丢失前一字节。 • 在满足串行口接收中断标志位RI(SCON.0)=0的条件 下,置允许接收位REN(SCON.4)=1就会启动接收一 帧数据进入输入移位寄存器,并装载到接收SBUF中, 同时使RI=1.当发读SBUF命令时(执行MOV A , SBUF指令),即是有接收缓冲器(SBUF)取出信息 通过8051内部总线送CPU. • 对于发送缓冲器,因为发送时CPU是主动的,不会 产生重叠错误,一般不需要用双缓冲器结构来保持最 大传送速率。
1帧共11位 空 闲 起 始 位 D0 LSB 数据位9位 D7 MSB 停 止 位 空 闲
RB8/TB8
起始位:1位 数据位:9位 停止位:1位 (104)
2.80C51串行口的控制寄存器
串行口控制寄存器SCON
计算波特率
方式0为固定波特率:B=fosc/12 方式2可选两种波特率: B=(2SMOD /64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。 B=(2SMOD/32)×T1溢出率 T1为方式2的时间常数: X = 28 - t/T 溢出时间: t= (28 -X)T = (28 -X)×12/ fosc T1溢出率=1/t= fosc /[12×(2n -X)] 波特率B=(2SMOD /32)×fosc/[12×(28-X)] 串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。 T1选方式2: TH1= X = 28 - fosc/12×2SMOD/(32×B) T1选方式1用于低波特率,需考虑T1重装时间常数时间。 也可选工作方式3。
• SM2=1时,接收机处于地址帧筛选状态。若 RB8=1,该地址帧信息可进入SBUF,并 使RI为1,进而在中断服务中再进行地址号 比较;若RB8=0,该帧不是地址帧,应丢掉, 且保持RI=0。 SM2=0时,接收机处于地址帧筛选被禁止状 态。不论收到的RB8为0或1,均可以使收 到的信息进入SBUF,并使RI=1。此时的 RB8通常为校验位。
一串行帧的数据格式
10位帧,用于双机通信
起始位:1位 数据位:8位 停止位:1位
• (101)
单片机的串行接口
主讲:刘学良 小组成员:黄小路 高征 胡远远 吴诺松 张翔
有两个数据缓冲寄存器SBUF,一个输入移位寄存器,一个 串行控制寄存器SCON和一个特殊功能寄存器PCON等组成。 位SBUF是全双工串行接口寄存器, 它是特殊功能寄 存器,地址为 99H,不可位寻址;串行输出时为发 送数据缓冲器,发送寄存器只写不读,数据从 发送端TXD(P3.1)输出; 串行输入时为接收数 门 SBUF 据缓冲器,接收寄存 器只读不写,数据从 发送控制器 TI 波 接收端 RXD(P3.0) 特 率 串行口中断 输入;由指令确定是对发 CPU 发 + 生 送寄存器或接收寄存器作用。
REN :串行接收使能位,软件置 1 时,启动接 收过程
TB8:多机方式发送的第9位
多机方式的地址/数据帧标志。也可作为奇偶 校验位
RB8:多机方式接收的第9位
多机方式的地址/数据帧标志。也可作为奇偶校验位
TI:发送中断标志位,要由软件清0 RI:接收中断标志位,要由软件清0
方式2和方式3:11位帧,用于多机通信
RHT :CLR TB8 MOV R0,#50H M1: MOV R7,# 10H L3: MOV A,@R0 MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R7,L3 AJMP MAIN END
• • • • • • • • • • • • • •
从机程序: SR3 :JNB RI,$ ORG 0030H CLR RI MAIN: MOV R0,#30H MOV R6,#10H JNB TB8,RHT SI: MOV SCON,#0B0H SETB SM2 SR1: JNB RI,$ SJMP SR1 CLR RI RHT: MOV A,SBUF SR2: MOV A,SUBF MOV @R0 , A XRL A,#02H INC R0 JNZ SR1 CLR SM2 DJNZ R6,SR3 MOV SBUF,#02H AJMP SI JNB TI,$ END CLR TI
8.2单片机串行口的结构与工作原理
• 51系列单片机的串行口是什么? 串行口是一个可编程的全双工串行通信接口,通过软件编程,它可以作通用 异步接收和发送器UART用,也可以作同步移位寄存器用。 • 串行口结构框图:(Pg157)
8
发送SBUF(99H)
门
TXD(P3.1) 串 寄 行 存 控 器 制 SCON (98H)
多机通信
• 多个MCS-51单片机可以利用串行口进行多机通信。在 多机通信中要保证主机与所选择的从机实现可靠地通信, 必须保证串行ห้องสมุดไป่ตู้具有识别功能。 • 控制寄存器SCON的SM2位就是为满足这一条而设置 的多机通信控制位。 • 原理:在串行口以方式2(或方式3)接收时,若SM2=1, 表示置多机通信功能位,此时可能出现两种情况: 接 收到的第9位数据为1时,数据才装入SBUF,并置中断 标志RI=1,向CPU发出中断请求。 接收到的第9位数 据为0时,则不产生中断标志,信息抛弃 • 若SM2=0,则接收到的第9位数据不论为0还是1,都 产生RI=1中断标志,接收到的数据装入SBUF。(104)
终止位、8个数据位),则这时的波特率为:10×120位/秒
=1200波特(bps).每一位代码的传送时间Td=1/ 1200=0.833ms • 波特率是衡量传输通道频宽的指标,它和传送数据的速率并不一 致。例如上例中,因为除掉起始位和终止位,每一个数据实际只 占8位,所以数据位的传送速率为:8×120=960位/秒 • 异步通讯的传送速度在50~19200波特之间。常用于计算机到终 端机和打印机之间的通信、直通电报以及无线电通讯的数据发送 等。
器 T1 接收控制器 RI
TXD
SBUF
移位寄存器
RXD
串行口内部结构示意简图
移位时钟
T1 fosc
1 12
TXD(P3.1) 1/16 发送SBUF(99H)
写SBUF 内部BUS
SMOD=1
TH1 TL1
读SBUF 接收SBUF(99H)
T1溢出率 1/2 PXD(P3.0)
1 12 1 2
1/16
内 部 中 断 总 线
定时器T1
发送控制器 分 频 器
TI
RI
1
中断
Fosc/2 波特率发生器
接收控制器
8
接收SBUF(99H)
输入移位寄存器
RXD(P3.0)
波特率
• 什么是波特率? • 波特率,即数据传送率,表示每秒钟传送二进制代码的位数,它 的单位是位/秒. • 波特率对于CPU与外界的通信是很重要的:假设数据传送率是 120字符/秒,而每个字符格式包含十个代码(一个起始位、一个
SMOD=0
装载SBUF 输入移位寄存器
RI
• 8051通过引脚RXD(P3.0,串行口数据接收端)和引 脚TXD(P3.1,串行口数据发送端)与外界进行通信。 • 图中有两个物理上独立的接收、发送缓冲器SBUF, 它们占有同一个地址99H,可同时发送、接收数据。 发送缓冲器只能写入,不能读出;接收缓冲器只能 读出不能写入。 • 串行发送与接收的速率与移位时钟同步。8051用定 时器T1作为串行通信的波特率,T1溢出率经2分频 (或不分频)又经16分频作为串行发送或接收的移 位脉冲。移位脉冲的速率即是波特率。 • 串行口的发送和接收都是以特殊功能寄存器SUBF的 名义进行读或写的,当向SUBF发“写”命令时(执 行MOV SBUF, A 指令)即是向发送缓冲器SBUF装 载并开始由TXD引脚向外发送的一帧数据,发送完 便使发送中断标志位TI=1
串行口的结构
MCS-51 单片机串行接口的硬件
P3.0 位的第二功能 —— 收端 RXD P3.1 位的第二功能 —— 发端 TXD
MCS-51 单片机串行接口的控制
寄存器 SCON、PCON、SBUF 寄存器 IE、IP
串行口控制寄存器SCON
SM0、SM1 —— 串行接口工作方式定义位 • SM0、SM1 = 00 —— 方式 0,8位同步移位寄存器 • SM0、SM1 = 01 —— 方式 1,10 位异步接收发送 • SM0、SM1 = 10 —— 方式 2,11 位异步接收发送 • SM0、SM1 = 11 —— 方式 3,11 位异步接收发送 注意: 方式 0 的特点,方式 2、方式 3 的差异
电源控制寄存器PCON
SMOD :波特率倍增位。在串行口方式 1 、方式 2 、 方式3时,波特率与SMOD有关,当SMOD=1时,波特 率提高一倍。复位时,SMOD=0。
例:主机向02号从机发送50H~5FH中的数 据;02号从机将接收到的数据放到内 RAM30H ~ 3FH单元中。
• 主机程序:
• ORG 0030H • MAIN:MOV SCON , # 98H • M1: MOV SBUF , # 02H • L1: JNB TI,$ • CLR TI • JNB RI,$ • MOV A,SUBF • XRL A,#02H • JZ RHT • AJMP M1
(1)主、从机均初始化为方式2或方式3,置SM2
=1,允许中断。 (2)主机置TB8=1,发送要寻址的从机地址。 (3)所有从机均接收主机发送的地址,并进行地 址比较。 (4)被寻址的从机确认地址后,置本机。SM2= 0,向主机 返回地址,供主机核对。 (5)核对无误后,主机向被寻址的从机发送命令, 通知从机接收或发送数据。 (6)通信只能在主、从机之间进行,两个从机之 间的通信需通过主机作中介。 (7)本次通信结束后,主、从机重置SM2=1, 主机可再对其他从机寻址。
特殊功能寄存器
• 串行数据传送速率控制寄存器 —— PCON
地址:
SMOD = 0,定义波特率不 SMOD = 1,定义波特率加 注:PCON 寄存器的地址为87H, 仅 b7 位有用,不可位寻址 ANL PCON,#7FH:对SMOD位清 ORL PCON,#80H:对SMOD位置
TDL:等待方式 PD:掉电方式 GF1、 GF2通用标志位
SM2 —— 多机通信控制位(方式2和3) • SM2 = 0,无多机通信
• SM2 = 1,允许多机通信
REN —— 串行口接收数据控制
• REN = 1,允许串行口接收数据 • REN = 0,禁止串行口接收数据 • 由软件置位或清
• TB8 —— 发送串行输出数据的第 9
双机通信时它可作奇偶校验位;在多机通信中可作为 区别地址帧或数据帧的标识位。
串行口的应用
串行口初始化编程格式:
SIO:MOV SCON,#控制状态字 ;写方式字且 TI=RI=0 ( MOV PCON,#80H ) ;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;开串行口中断 ( SETB ES)
多机通信系统示意图
TXD RXD 8051 主机
TXD RXD 80C51
0#从机
TXD RXD 80C51
1#从机
TXD RXD 80C51
2#从机
多机通信的实现,主要靠主、从机之间正确地设置
与判断多机通信控制位SM2和发送或接收的第9数据位
(D8)。
下面简述如何实现多机通信。
SM2:多机通信控制位