ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UART

2021-07-13 04:00:14  阅读:187  来源: 互联网

标签:方式 UART SBUF 发送 接收 数据 RI


一、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,SBUF,发送,接收,数据,RI
来源: https://www.cnblogs.com/chengerccj/p/15004733.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有