串行口工作模式初步 之 模式1

本文深入解析了串行通信模式1的工作原理,包括8位UART格式的一帧信息构成,发送与接收过程的详细机制,以及波特率的可变设置。介绍了发送时TxD端口的启动与移位寄存器的运作,接收时RxD端口的采样与数据有效性判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当软件设置SCON的SM0、SM1为“01”时,串行通信则以模式1工作。此模式为8位UART格式,一帧信息为10位:1位起始位,8位数据位(低位在先)和1位停止位。波特率可变,即可根据需要进行设置。TxD(TxD/P3.1)为发送信息,RxD(RxD/P3.0)为接收端接收信息,串行口为全双工接受/发送串行口。

模式1的发送过程:

串行通信模式发送时,数据由串行发送端TxD输出。当主机执行一条写“SBUF“的指令就启动串行通信的发送,写“SBUF”信号还把“1”装入发送移位寄存器的第9位,并通知TX控制单元开始发送。发送各位的定时是由16分频计数器同步。移位寄存器将数据不断右移送TxD端口发送,在数据的左边不断移入“0”作补充。当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第9位“1”,在它的左边各位全为“0”,这个状态条件,使TX控制单元作最后一次移位输出,然后使允许发送信号“SEND失效,完成一帧信息的发送,并置位中断请求位TI,即TI=1,向主机请求中断处理

模式1的接收过程:

当软件置位接收允许标志位REN,即REN=1时,接收器便以选定波特率的16分频的速率采样串行接收端口RxD,当检测到RxD端口从“1”→“0”的负跳变时就启动接收器准备接收数据,并立即复位16分频计数器,将1FFH(?)植装入移位寄存器。复位16分频计数器是使它与输入位时间同步。16分频计数器的16个状态是将1波特率(每位接收时间)均为16等份,在每位时间的7、8、9状态由检测器对RxD端口进行采样,所接收的值是这次采样直经“三中取二”的值,即3次采样至少2次相同的值,以此消除干扰影响,提高可靠性。在起始位,如果接收到的值不为“0”(低电平),则起始位无效,复位接收电路(拉高电平?),并重新检测"1"→"0"的跳变。如果接收到的起始位有效,则将它输入移位寄存器,并接收本帧的其余信息。接收的数据从接收移位寄存器的右边移入,已装入的1FFH向左边移出,当起始位“0”移到移位寄存器的最左边时,使RX控制器作最后一次移位,完成一帧的接收。若同时满足以下两个条件:
·RI=0
·SM2=0或接收到的停止位为1。
则接收到的数据有效,实现装载入SBUF,停止位进入RB8,置位RI,即RI=1,向主机请求中断,若上述两条件不能同时满足,则接收到的数据作废并丢失,无论条件满足与否,接收器重又检测RxD端口上的"1″→"0″的跳变,继续下一帧的接收。接收有效,在响应中断后,必须由软件清0,即RI=0。通常情况下(?),串行通信工作于模式1时,SM2设置为"0"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值