Java教程

UART

本文主要是介绍UART,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、SCON寄存器(SCON的所有位都可进行位操作清“0”或置“1”)

D0 D1 D2 D3 D4 D5 D6 D7

RI TI RB8 TB8 REN SM2 SM1 SM0

 

1.SM0和SM1

表 8 . 1 
0 
1 
2 
3 
串 行 囗 的 4 种 工 作 方 就 
功 能 说 明 
同 步 移 位 寄 存 器 方 就 ( 用 于 扩 展 1/0 囗 ) 
8 位 异 步 收 发 , 波 持 率 可 殳 ( 由 定 时 器 控 制 ) 
9 位 异 步 收 发 , 波 持 率 为 f. “ / 64 f. “ / 32 
9 位 异 步 收 发 , 波 持 率 可 变 ( 由 定 时 器 控 制 )

 

2、SM2

SM2——多机通信控制位

a.多机通信是在方式2和方式3下进行。当串口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。

当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。

 

b.在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。

c.在方式0时,SM2必须为0。

当SM2= 0时,则不论第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。

 

3、REN——允许串行接收位(使能)

由软件置“1”或清“0”。

REN=1,允许串行口接收数据。

REN=0,禁止串行口接收数据。

 

4、TB8——发送的第9位数据

方式2和方式3,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。在双机串行通信时,一般作为奇偶校验位使用。在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。

 

5、RB8——接收的第9位数据

方式2和方式3,RB8存放接收到的第9位数据。在方式1,如SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。

 

6、TI——发送中断标志位

方式0,串行发送的第8位数据结束时TI由硬件置“1”,在其他方式中,串行口发送停止位的开始时置TI 为“1”。

TI =1,表示一帧数据发送结束。TI的状态可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。

 

7、RI—接收中断标志位

方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。RI = 1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。

 

二、PCON寄存器(仅其最高位与串口通信有关,故其他位略去)

D0 D1 D2 D3 D4 D5 D6 D7

IDL PD GF0 GF1 - - - SMOD

 

1、SMOD:波特率选择位。

才 y00 
方 式 1 波 特 率 
× 定 时 器 Tl 的 溢 出 率 
32

SMOD = 1时,要比SMOD = 0时的波特率加倍。

 

三、SBUF寄存器

串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。这个重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,此时99H表示接收SBUF。

 

四、串行口的4种工作方式

1、方式0

方式0为同步移位寄存器输入/输出方式。该方式并不用于两个单片机之间的异步串行通信,而是用于串行口外接移位寄存器,扩展并行I/O口。

8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率固定,为fosc/12。

 

a.输出:

当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。

sı-S6 
SBUF 
RXD(XE) 
DO 
Dl 
m 
D3 
D4 
D5 
D6 
sı-S6 
m

 

b.输入:

方式0输入,REN为串行口允许接收控制位,0—禁止接收; 1—允许接收。

当向SCON寄存器写入控制字(设置为方式0,并使REN位置1,同时RI = 0)时,产生一个正脉冲,串行口开始接收数据。

 引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置1,表示一帧数据接收完毕,可进行下一帧数据的接收。

sı-S6 
SBUF 
RXD(XE) 
DO 
Dl 
m 
D3 
D4 
D5 
D6 
sı-S6 
m

 

这篇关于UART的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!