8051单片机SCON寄存器详解:串行通信与控制

需积分: 12 2 下载量 79 浏览量 更新于2024-09-12 1 收藏 164KB DOC 举报
C51单片机的特殊功能寄存器SCON主要负责串行通信的配置和状态控制,其中包含了多个关键位,如SM0、SM1、SM2、REN、TB8、RB8、TI和RI。这些位分别对应不同的串行通信模式和功能。 1. **SM0** 和 **SM1** 是串行口工作方式选择位。这两位的组合定义了四种不同的工作方式: - 方式0:同步移位寄存器方式,用于扩展I/O口。 - 方式1:8位异步收发,波特率可变,由定时器T1控制。 - 方式2:9位异步收发,波特率固定为Fosc/64或Fosc/32。 - 方式3:同方式2,但波特率可变,由定时器T1控制。 2. **SM2** 是多级通信控制位。在方式2和3中,SM2用于实现多机通信。如果SM2设为1,在接收状态下,当接收到的第九位(RB8)为0时,数据被舍弃且RI被清0;若RB8为1,则数据被送入接收SBUF并使RI置1。在方式1中,接收到有效的停止位会激活RI;而在方式0中,应将SM2设置为0。 3. **REN** 允许接收位。当REN设为1时,允许串行口接收数据;设为0则禁止接收。REN状态由软件指令设定。 4. **TB8** 是发送的第9位数据位。在多机通信(方式2和3)中,TB8用来区分发送的是地址还是数据,TB8=0表示数据,TB8=1表示地址。此位由软件指令置位或复位。 5. **RB8** 存储接收到的第9位数据。在方式2和3中,RB8保存接收到的第9位;在方式1,如果SM2=0,RB8表示接收的停止位;在方式0,RB8不被使用。 6. **TI** 发送中断标志位。在方式0下,TI在串行发送第8位结束后由硬件置1;在其他方式中,TI在发送停止位开始时置1。TI=1表示一帧数据发送完成,可以触发中断或供软件查询。中断服务程序中,TI需由软件清0以准备发送新的数据。 7. **RI** 接收中断标志位。在方式0下,RI在接收完第8位时由硬件置1;在其他方式中,RI在接收到停止位时置1。RI=1表明一帧数据接收完毕,并申请中断,要求CPU从SBUF读取数据。同样,RI也需要由软件清0。 此外,提到了TCON定时器/计数器控制寄存器,它控制定时器的工作模式,包括: - 方式0:13位定时器/计数器。 - 方式1:16位定时器/计数器。 - 方式2:8位自动重载定时器/计数器。 - 方式3:仅适用于T0,将其分为两个8位计数器,T1停止计数。 这些寄存器和它们的位设置在C51单片机的串行通信中起到至关重要的作用,通过灵活配置这些位,可以实现不同需求的串行通信协议和控制。