异步串行UART协议详解 中文版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
异步串行UART协议
7.1.1 串行口的结构
2个物理上独立的接收、发送缓冲器SBUF,占用同一地 个物理上独立的接收、发送缓冲器 个物理上独立的接收 , 址99H ;接收器是双缓冲结构 。
7.1.2 串行口的控制
1、串行口控制寄存器SCON (98H)
设定工作方式、接收 发送控制以及设置状态标志 设定工作方式、接收/发送控制以及设置状态标志 SCON (98H)
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0、SM1:工作方式设置位 、 :
SM2,多机通信控制位。 ,多机通信控制位。
主要用于方式2和方式 。 主要用于方式 和方式3。对于接收机 和方式 SM2=0,收到 ,收到RB8(0或1)既可使收到的数据进入 ( 或 )既可使收到的数据进入SBUF, , 并激活RI。 并激活 。 SM2=1,收到的 信息丢弃, ,收到的RB8=0时,收到的信息丢弃,不激活 ; = 时 收到的信息丢弃 不激活RI 若收到的RB8=1时,收到的数据进入 数据进入SBUF,并激活 ,进而 若收到的 = 时 收到的数据进入 ,并激活RI, 读走。 在中断服务中将数据从 读走 在中断服务中将数据从SBUF读走。 方式0时 必须是0。 方式 时,SM2必须是 。 必须是 方式1时 才激活。 方式 时,SM2=1时,只有接收到有效停止位时,RI才激活。 时 只有接收到有效停止位时, 才激活
REN,允许串行接收位。 ,允许串行接收位。
置REN=1,启动串口接收过程 , 置REN=0,则禁止串口接收 ,
TB8,在方式 、3中,是发送数据的第 位 ,在方式2、 中 是发送数据的第9位 数据的奇偶校验位 地址帧/数据帧的标志位 地址帧 数据帧的标志位
RB8,在方式 、3中,是接收到数据的第 位 ,在方式2、 中 是接收到数据的第9位 奇偶校验位 地址帧/数据帧的标志位 数据帧的标志位。 地址帧 数据帧的标志位。
方式1时 是接收到的停止位。 方式 时,若SM2=0,则RB8是接收到的停止位。 , 是接收到的停止位
TI,发送中断标志位。 ,发送中断标志位。
方式0时 串行发送第 位数据结束时 方式 时,串行发送第8位数据结束时 其它方式, 其它方式,串行发送停止位的开始时 硬件使TI置 ,发中断申请。 硬件使 置1,发中断申请。必须在中断服务程序中 软件将其清0。 用软件将其清 。
RI,接收中断标志位。 ,接收中断标志位。
方式0时,串行接收第8位数据结束时 方式 时 串行接收第 位数据结束时 其它方式, 其它方式,串行接收停止位的中间时 硬件使RI置 ,发中断申请。 硬件使 置1,发中断申请。必须在中断服务程序中 软件将其清0。 用软件将其清 。
2、电源功能寄存器PCON (87H)
PCON (87H)
SMOD
SMOD, 波特率倍增位。 , 波特率倍增位。 在方式1、 、 时 波特率与SMOD有关: 有关: 在方式 、2、3时,波特率与 有关 SMOD=1时,波特率提高一倍。复位时, 时 波特率提高一倍。复位时, SMOD=0。 。
7.2 串行口的工作方式
工作方式0 工作方式 工作方式1 工作方式 工作方式2 工作方式 工作方式3 工作方式
串行口工作方式
SM0、SM1 工作方式 00 01 10 11 方式0 方式1 方式2 方式3 功能描述 波特率
8位同步移位寄 Fosc/12 存器 10位UART 可变,由定时器 控制 11位UART Fosc/64或fosc/32 11位UART 可变,由定时器 控制
其中fosc为晶振频率。
方式0 方式
7.2.1 工作方式0
同步移位寄存器的输入输出方式。 同步移位寄存器的输入输出方式。用于扩展并行输入或 引脚输入或输出, 输出口。数据由RXD引脚输入或输出,移位脉冲由 输出口。数据由 引脚输入或输出 移位脉冲由TXD引 引 脚输出。 位数据 波特率为fosc/12。 位数据。 脚输出。8位数据。波特率为 。 方式0发送 方式 发送
写写SBUF
S6P2 SEND SHIFT RXD(DATA OUT) TXD(SHIFT CLOCK) S3P1 S6P1 TI D0 D1 D2 D3 D4 D5 D6 D7
起始位1
方式2的波特率固定为晶振频率的1/64或方式3的波特率由定时器决定
方式2和方式3发送
先把起始位0输出到TXD ,然后发送移位寄存器的输出位输出位((D0)。)。每一移位脉冲都使输出移位寄存器每一移位脉冲都使输出移位寄存器的各位移动一位的各位移动一位,,并由TXD 引脚输出引脚输出。。
最后一次移位后最后一次移位后,,置TI=1,请求中断请求中断。。
写写S B UF
S 1P1
S END
TXD S HIFT
D0D1D2D3TI
D4D5D6D7TX CLOC K
DATA
起起位
停停位
TB8S TOP BIT G EN
数据从右边移入输入移位寄存器,数据从右边移入输入移位寄存器如果条件不满足,
如果条件不满足
波特率的计算
方式0、2的波特率是固定的的波特率是固定的,,而方式1、3的波特率是可变的特率是可变的,,由定时器T1的溢出率来决定的溢出率来决定。。方式0波特率= fosc/12
方式2波特率=(2SMOD /64) fosc
方式1波特率=(2SMOD /32) (T1溢出率溢出率))方式3波特率=(2SMOD /32) (T1溢出率溢出率))T1 溢出率= fosc /{12×[256 -(TH1)]}T1方式2,TR1=1(以启动定时器以启动定时器))