第7章MCS-51的串行口 全双工的异步通讯串行口 4种工作方式,波特率由片内定时器/计数器控制。 每发送或接收一帧数据,均可发出中断请求。 除用于串行通讯,还可用来扩展并行10口。 7.1串行口的结构 串行口内部结构如下图,两个物理上独立地接收和 发送缓冲器,可同时收、发数据。 两个缓冲器共用一个特殊功能寄存器字节地址: SBUF(99H)。 控制寄存器共两个:特殊功能寄存器Sc0N和PcoN
第7章 MCS-51的串行口 全双工的异步通讯串行口 4种工作方式 ,波特率由片内定时器/计数器控制。 每发送或接收一帧数据,均可发出中断请求。 除用于串行通讯,还可用来扩展并行I/O口。 7.1 串行口的结构 串行口内部结构如下图,两个物理上独立地接收和 发送缓冲器,可同时收、发数据。 两个缓冲器共用一个特殊功能寄存器字节地址: SBUF(99H)。 控制寄存器共两个:特殊功能寄存器SCON和PCON
内部总 TXDP31引脚) 线8 发送 SBUF (99H) 发送控制器 定时器 串行口中断 申行控制寄存器 TI 接收 接收控制器 (98H) SBUF SCON (99H) 「输入移位寄存器 RYD(P3.0引脚) 7.1.1串行口控制寄存景SCON 字节地址98H,可位寻址,格式如图所示
7.1.1 串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示
D7 D6 D5 D4 D3 D2 D1 DO SCON SMO SM1 SM2 REN TB8 RB8 TIRI 98H 位地址|9FH9EH9DH9CH9BH9AH99H98H (1)SMo、SM1串行口4种工作方式的选择位 表串行口的4种工作方式 SM0SM1方式 功能说明 000同步移位寄存器方式(用于扩展/0口) 0118位异步收发,波特率可变(由定时器控制) 1029位异步收发,波特率为fosc/64或fosc/32 139位异步收发,波特率可变(由定时器控制) (2)SM2—多机通信控制位 用于方式2或方式3中
(1)SM0、SM1——串行口4种工作方式的选择位 表 串行口的4种工作方式 SM0 SM1 方式 功 能 说 明 0 0 0 同步移位寄存器方式(用于扩展I/O口) 0 1 1 8位异步收发,波特率可变(由定时器控制) 1 0 2 9位异步收发,波特率为fosc/64或fosc/32 1 1 3 9位异步收发,波特率可变(由定时器控制) (2)SM2 ——多机通信控制位 用于方式2或方式3中
当串行口以方式2或方式3接收时, 如果SM2=1,只有当接收到的第9位数据(RB8)为 “1”时,才将接收到的前8位数据送入SBUF,并置 “1”Rl,产生中断请求;当接收到的第9位数据 (RB8)为“0”时,则将接收到的前8位数据丢弃。 如果SM2=0,则不论第9位数据是“1”还是“0”, 都将前8位数据送入SBUF中,并置“1”R,产 生中断请求。 在方式1时,如果SM2=1,则只有收到停止位时才会激 活Rl。 在方式0时,SM2必须为0。 (3)REN允许串行接收位 由软件置“1”或清“0
当串行口以方式2或方式3接收时, 如果SM2=1,只有当接收到的第9位数据(RB8)为 “1”时,才将接收到的前8位数据送入SBUF,并置 “1” RI,产生中断请求;当接收到的第9位数据 (RB8)为“0”时,则将接收到的前8位数据丢弃。 如果SM2=0,则不论第9位数据是“1”还是“0” , 都将 前8位数据送入SBUF中,并置“1” RI,产 生中断请求。 在方式1时,如果SM2=1,则只有收到停止位时才会激 活RI。 在方式0时,SM2必须为0。 (3)REN——允许串行接收位 由软件置“1”或清“0”
REN=1允许串行口接收数据。 REN=0禁止串行口接收数据。 (4)TB8发送的第9位数据 方式2和3时,TB是要发送的第9位数据,可作为奇偶 校验位使用,也可作为地址帧或数据帧的标志。 =1为地址帧,=0为数据帧 (5)RB8接收到的第9位数据 方式2和3时,RB8存放接收到的第9位数据。在方式1, 如果SM2=0,RB8是接收到的停止位。在方式0,不 使用RB8。 (6)T|发送中断标志位
REN=1 允许串行口接收数据。 REN=0 禁止串行口接收数据。 (4)TB8——发送的第9位数据 方式2和3时,TB8是要发送的第9位数据,可作为奇偶 校验位使用,也可作为地址帧或数据帧的标志。 =1为地址帧, =0为数据帧 (5)RB8——接收到的第9位数据 方式2和3时,RB8存放接收到的第9位数据。在方式1, 如果SM2=0,RB8是接收到的停止位。在方式0,不 使用RB8。 (6)TI——发送中断标志位
方式0时,串行发送第8位数据结束时由硬件置“1”, 其它工作方式,串行口发送停止位的开始时置“1”。 =1,表示一帧数据发送结束,可供软件查询,也 可申请中断。cPU响应中断后,在中断服务程序中向 SBUF写入要发送的下一帧数据。T必须由软件清0。 (7)R|接收中断标志位 方式0时,接收完第8位数据时,R|由硬件置1。 其它工作方式,串行接收到停止位时,该位置“1”。 R|=1,表示一帧数据接收完毕,并申请中断,要求 GPU从接收SBUF取走数据。该位的状态也可供软件查 询。R|必须由软件清“0”。 7.1.2特殊功能寄存器PCON 字节地址为87H,没有位寻址功能
方式0时,串行发送第8位数据结束时由硬件置“1” , 其它工作方式,串行口发送停止位的开始时置“1” 。 TI=1,表示一帧数据发送结束,可供软件查询,也 可申请中断。CPU响应中断后,在中断服务程序中向 SBUF写入要发送的下一帧数据。TI必须由软件清0。 (7)RI——接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置1。 其它工作方式,串行接收到停止位时,该位置“1” 。 RI=1,表示一帧数据接收完毕,并申请中断,要求 CPU从接收SBUF取走数据。该位的状态也可供软件查 询。RI必须由软件清“0” 。 7.1.2 特殊功能寄存器PCON 字节地址为87H,没有位寻址功能
D7 D6 D5 D4 D3 D2 DI DO PCON SMOD 87H 7-3 SMOD:波特率选择位。 例如:方式1的波特率的计算公式为: 方式1波特率=(2SM0/32)×定时器T的溢出率 当SM0D=1时,要比SM0D=0时的波特率加倍,也称SMD 位为波特率倍增位 7.2串行口的4种工作方式 7.2.1方式0 同步移位寄存器输入输出方式,常用于外接移位寄存 器,以扩展并行10口。 8位数据为一帧,不设起始位和停止位,先发送或接
SMOD:波特率选择位。 例如:方式1的波特率的计算公式为: 方式1波特率=(2 SMOD/32)×定时器T1的溢出率 当SMOD=1时,要比SMOD=0时的波特率加倍,也称SMOD 位为波特率倍增位。 7.2 串行口的4种工作方式 7.2.1 方式0 同步移位寄存器输入输出方式,常用于外接移位寄存 器,以扩展并行I/O口。 8位数据为一帧,不设起始位和停止位,先发送或接
收最低位。波特率固定为fosc/12。帧格式如下: DO DI D2 D4 D5 D6 D7 74 1.方式0发送 当CPU执行一条将数据写入发送缓冲器SBUF的指令时, 产生一个正脉冲,串行口即把SBUF中的8位数据以 fosc/12的固定波特率从RXD引脚串行输出,低位在 先,TXD引脚输出同步移位脉冲,发送完8位数据置 “1”中断标志位T。时序如图所示。 2.方式0接收 方式0接收时,REN为串行口接收允许接收控制位, REN=0,禁止接收
收最低位。波特率固定为fosc/12。帧格式如下: 1.方式0发送 当CPU执行一条将数据写入发送缓冲器SBUF的指令时, 产生一个正脉冲,串行口即把SBUF中的8位数据以 fosc/12的固定波特率从RXD引脚串行输出,低位在 先,TXD引脚输出同步移位脉冲,发送完8位数据置 “1”中断标志位TI。时序如图所示。 2.方式0接收 方式0接收时,REN为串行口接收允许接收控制位, REN=0,禁止接收
机器周期S1~S6 S1-S6 写 SBUF RXD(数据)D0D1D2D3D4D5D6D7 TXD 移位脉冲)L「L「L 75 REN=1,允许接收。当cPU向串行口的S00N寄存器写入 控制字(置为方式0,并置“1REN位,同时R|=0) 时,产生一个正脉冲,串行口即开始接收数据。引脚 RXD为数据输入端,TⅫD为移位脉冲信号输出端,接收 器也以fosc/12的固定波特率采样RXD引脚的数据信息, 当接收到8位数据时置“1”中断标志R。表示一帧数 据接收完毕,可进行下一帧数据的接收。时序如下图:
REN=1,允许接收。当CPU向串行口的SCON寄存器写入 控制字(置为方式0,并置“1”REN位,同时RI=0) 时,产生一个正脉冲,串行口即开始接收数据。引脚 RXD为数据输入端,TXD为移位脉冲信号输出端,接收 器也以fosc/12的固定波特率采样RXD引脚的数据信息, 当接收到8位数据时置“1”中断标志RI。表示一帧数 据接收完毕,可进行下一帧数据的接收。时序如下图:
机器周期S1~S6 S1-S6 写SCON RXD(数据) Do DI D2 D3 D4 D5 D6 D7 TXD (移位脉冲)「「L「L「L「「L「L「 RI 7-6 方式0下,Sc0N中的TB8、RB8位没有用到,发送或接收 完8位数据由硬件置“1”T或R中断标志位,cPU响 应中断。T或R标志位须由用户软件清“0”,可采 用如下指令: CLRT;T位清“0” CLR R ;R|位清“0” 方式0时,SM2位(多机通讯控制位)必须为0
方式0下,SCON中的TB8、RB8位没有用到,发送或接收 完8位数据由硬件置“1”TI或RI中断标志位,CPU响 应中断。TI或RI标志位须由用户软件清“0” ,可采 用如下指令: CLR TI ;TI位清“0” CLR RI ;RI位清“0” 方式0时,SM2位(多机通讯控制位)必须为0