搜索
写经验 领红包

详解单片机串行通讯口的工作方式

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。