串行口控制寄存器SCON
字节地址98H,可位寻址,格式如图所示。
scon寄存器结构
scon d7 d6 d5 d4 d3 d2 d1 d0
sm0 sm1 sm2 ren tb8 rb8 ti ri
位地址 9fh 9eh 8dh 9ch 9bh 9ah 99h 98h
(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” 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时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为地址帧或数据帧的标志。
=1为地址帧, =0为数据帧
(5)RB8――接收到的第9位数据
方式2和3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。
(6)TI――发送中断标志位
方式0时,串行发送第8位数据结束时由硬件置“1”,其它工作方式,串行口发送停止位的开始时置“1”。
TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。CPU响应中断后, 向SBUF写入要发送的下一帧数据。TI必须由软件清0。
(7)RI――接收中断标志位
方式0时,接收完第8位数据时,RI由硬件置1,其它工作方式,串行接收到停止位时,该位置“1”。
RI=1,表示一帧数据接收完毕,并申请中断, CPU从接收SBUF取走数据。该位状态也可软件查询。RI必须由软件清“0”。
特殊功能寄存器PCON
字节地址为87H,没有位寻址功能。
spcon d7 d6 d5 d4 d3 d2 d1 d0
SMOD xx xx xx xx xx xx xx
SMOD:波特率选择位。
例如:方式1的波特率的计算公式为:
方式1波特率=(2SMOD/32)×定时器T1的溢出率
也称SMOD位为波特率倍增位。
串行口的4种工作方式
方式0
同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口。
8位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率固定为fosc/12。
帧格式如下:
d0 d1 d2 d3 d4 d5 d6 d7........
1.方式0发送
当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以
fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据置“1”中断标志位TI。