要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行操作

如题所述

第1个回答  2012-06-02
1. 数据缓冲寄存器SBUF
SBUF 是可以直接寻址的专用寄存器。物理上,它对应着两个寄存器,即一个发送寄存
器一个接收寄存器,CPU 写SBUF 就是修改发送寄存器;读SBUF 就是读接收寄存器。接
收器是双缓冲的,以避免在接收下一帧数据之前,CPU 未能及时的响应接收器的中断,没
有把上一帧的数据读走而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,
一般不需要双缓冲,因为发送时CPU 是主动的,不会产生重叠问题。
2. 状态控制寄存器SCON
SCON 是一个逐位定义的8 位寄存器,用于控制串行通信的方式选择、接收和发送,指
示串口的状态,SCON 即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。
3. 控制寄存器PCON
控制寄存器PCON 也是一个逐位定义的8 位寄存器,仅最高位SMOD 与串口的控制有关。SMOD 是串行通信波特率系数控制位,当串口工作在工作方式1、2 时,若使用
T1 作为波特率发生器其SMOD=1 则波特率加倍 。
初始化示例
void _init(void)
{
TMOD = 0x20; //定时器T1定义为模式2
TL1 = 0xFD; TH1 = 0xFD; //设置波特率为9600bps
PCON = 0x00; //SMOD=0
SCON = 0x70; //SM0,SM1=01--选择工作方式1
//SM2=1--多机控制位置1
//REN=1--禁止接收
//TB8=0--此方式无要发送第9位数据
//RB8=0--此方式无接收到的第9位数据
//TI=0--发送中断标志清0
//RI=0--接收中断标志清0
TR1 = 1; //启动定时器T1
}
相似回答