详解单片机串行通讯口的工作方式
1.数据缓冲器SBUF
发送SBUF和接收SBUF共用一个地址99H 。
1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。
发送指令:MOV SBUF,A
2)接收SBUF存放已接收成功的8位数据,供CPU读取。
读取串行口接收数据指令:MOV A,SBUF
2.串行口控制/状态寄存器SCON(98H)
SM0,SM1:选择串行口4种工作方式。
SM2:多机控制位,用于多机通讯。
REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。
TB8发送的第9位数据位,可用作校验位和地址/数据标识位
RB8:接收的第9位数据位或停止位
TI:发送中断标志,发送一帧结束,TI=1,必须软件清零
RI:接收中断标志,接收一帧结束,RI=1,必须软件清零
3.节电控制寄存器PCON
SMOD(PCON.7):波特率加倍控制位。
SMOD=1,波特率加倍, SMOD=0,则不加倍。
串行接口的工作方式
SM0,SM1选择四种工作方式。
(1) 方式0:同步移位寄存器方式。用于扩展并行I/O接口。
1.一帧8位,无起始位和停止位。
2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。
3.波特率B = fosc/12 如: fosc=12MHz, B=1MHz,每位数据占1ms。
4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。
(2) 方式1:8位数据异步通讯方式。
1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。
2.RXD:接收数据端。 TXD:发送数据端。
3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。
4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。
(3) 方式2和方式3:9位数据异步通讯方式。
1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。 第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。
2.RXD:接收数据端,TXD:发送数据端。
3.波特率: 方式2:B=(2SMOD/64)×fosc 。
方式3:B=(2SMOD/32)×T1溢出率 。
4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位为1 (或SM2=0),将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。