3.2 单片机串行口的控制寄存器
3.2.1串行接口数据缓冲器SBUF
SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外也有两条独立的收发信号线RxD(P3.0)、TxD(3.1),因此可以同时发送、接收数据,实现全双工。
3.2.2 串行口控制寄存器SCON
SCON寄存器用来控制串行口的工作方式和状态,它可以是位寻址。在复位时所有位被清零,字地址为98H。其格式如表1所示。
位地址 9F 9E 9D 9C 9B 9A 99 98
字符位 SM0 SM1 SM2 REN TB8 RB8 TI RI
表1 SCON各位定义
各位定义如下:
SM0、SM1:串行口工作方式选择位
其状态组合所对应的工作方式为:
SM0 SM1 工作方式 功能说明 波特率
0 0 0 8位同步移位寄存器 fosc/12
0 1 1 8位异步收发 由定时器控制
1 0 2 9位异步收发 fosc/64或fosc/32
1 1 3 9位异步收发 由控制器控制
SM2:多机通信控制位
因为多机通信是在方式2和方式3下进行的,因此SM2主要用于方式2和方式3。当串行口以方式2和方式3接收数据时,如SM2=1,则只有在接收到第9位数据(RB8)为1时才将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则将接收到的前8位数据丢弃。而当SM2=0时,则不论第9位数据时0还是1,都将前8位数据装入SBUF中,则产生中断请求。在方式0时,SM2必须为0.
REN:允许接收控制位
REN=0时禁止串行口接收;REN=1时允许串行口接收。
该位由软件置位或复位。
TB8:发送数据位
在方式2或方式3中,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位,它可作为奇偶校验位(单机通信),也可在多机通信中作为发送地址帧或数据帧的标志位。多机通信时,一般约定:发送地址帧时,设置TB8=1,;发送数据帧时,设置TB8=0.在方式0和方式1中,该位未用。
RB8:接收数据位
用于在方式2和方式3时存放接收数据的第9位。它即可以是约定的奇偶校验,也可以是约定的地址/数据标志位,可根据RB8被置位的情况对接收到的数据进行某种判断。在多机通信是,若RB8=1,说明收到的数据为地址帧;RB8=0,说明收到的数据为数据帧。在方式1下,若SM2=0,则RB8用于存放接收到的停止位方式;方式下,该位未用。
TI:发送中断标志位
用于指示一帧数据发送完否。在方式0下,发送电路发送完第8位数据时,TI由硬件置位;在其他方式下,TI在发送电路开始发送停止位时置位,这就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知一帧信息是否已发送完毕。 串行数据通信控制和应用+源程序(8):http://www.youerw.com/tongxin/lunwen_5358.html