方式0:同步移位寄存器输入输出方式

1. 利用移位寄存器实现串行/并行的转换(功能)
2. 波特率:fosc/12
3. RXD(P3.0)----用于串行数据的输入和输出 	TXD(P3.1)----充当输出的移位时钟
4. 数据大小:8位
5. 方式0发送:
	○ 串口接口移位寄存器(74HC164),主要用于扩展并行输出口
	○ 用单片机本身的3根线换取了8根线的作用
	○ 串行接口将8位数据从SBUF中取出
	○ TXD引脚上输出同步移位脉冲
	○ 以fosc/12的波特率从RXD端串行输出到移位寄存器
	○ 发完后TI置1,向CPU请求中断

6.在这里插入图片描述

7.在这里插入图片描述

8. 方式0接收:
	○ 串口接口移位寄存器(74HC165),主要用于扩展并行输入口
	○ CE非为移位脉冲使能端,0有效
	○ SH/LD非为控制端:SH/LD非为低电平时:并行进开,串行出关
                                       SH/LD非为高电平时:并行入关,串行出开
	○ CPU产生一个正脉冲,串行接口开始接收数据
	○ RXD作为串行数据的输入端
	○ TXD作为串行同步移位脉冲输出端
	○ CPU以fosc/12的波特率采样RXD引脚的串行数据
	○ 当接受到第8位数据时,将数据统一装入SBUF,并将RI置1,向CPU请求中断

9.在这里插入图片描述

10.在这里插入图片描述

方式1:用于串行发送/接收的10位通用异步接口

1. TXD用于发送数据、RXD用于接收数据
2. 帧格式:1位起始位(0)+8位数据位+1位停止位(1)
3. 波特率可调
4. 方式1发送:
	○ 执行向SBUF中写入数据的指令时启动发送
	○ 一个TX时钟周期产生一个移位脉冲
	○ 数据的发送就按照TX时钟脉冲一个一个在TXD端发送
	○ 8位数据发送完后,中断标志位TI置1,向CPU请求中断
	○ 通过置TXD为1,再送出一个停止位(1)

5.在这里插入图片描述

6. 方式1接收:
	○ SCON寄存器中的REN=1,表示允许接收
	○ 数据从RXD端口输入
	○ 当检测到R XD上的从1跳变到0时(也即起始位)启动位检测器
	○ 位检测器连续在7、8、9等份对RXD进行采样以确认是真正的起始位
	○ 开始正式接收数据,且每一位数据都进行3次的连续采样以确保正确
	○ 满足RI=0;SM2=0或者收到停止位1;以上两个条件时
		§ RI=0表示SBUF中的数据以及被取走了,有了一个向SBUF中存数据的机会;SM2=0则表示,本机处于通信状态,对方发过来的数据这边都会如数接收;停止位为1则表示,这是一个地址数据,同样也需要把接收到的数据存入到SBUF中)
	○ 可将接收到的数据装入SBUF,停止位送入RB8,并将中断标志位RI置1
  1. 在这里插入图片描述

方式2和方式3:11位异步通信接口(接/发过程与方式1类似)

1. TXD用于发送数据、RXD用于接收数据
2. 帧格式:1位起始位(0)+8位数据位+1位可编程的第9位数据位+1位停止位(1)
3. 发送时:第9位可由TB8编程为0或者1;或将奇偶校验位塞入TB8进而实现奇偶校验
4. 接收时:第9位数据进入RB8
5. 波特率:方式2  B=(2的SMOD次方/64)*fosc(由晶振频率决定)
                  方式3  B=(2的SMOD次方/32)*T1溢出率(由T1进行设置)
波特率也是方式2/方式3之间最大的差别,在进行编程时差别亦在于此。
6. 方式2和方式3发送:
	○ 执行数据写入SBUF时启动发送
	○ 一个TX时钟周期产生一个移位脉冲
	○ 第9位数据来自于SCON中的TB8
	○ 发送完毕后,中断标志位TI置1
	○ 通过置1TXD再发送一个停止位1

7.在这里插入图片描述

8. 方式2和方式3接收:(同方式1)
	○ SCON寄存器中的REN=1,表示允许接收
	○ 数据从RXD端口输入
	○ 当检测RXD上的从1跳变到0时(也即起始位)启动位检测器
	○ 位检测器连续在7、8、9等份对RXD进行采样以确认是真正的起始位
	○ 开始正式接收数据,且每一位数据都进行3次的连续采样以确保正确
	○ 接收完9位数据之后,若RI=0;SM2=0或第9位数据为1时
	○ 前8位数据可以送入SBUF中,第9位数据送入RB8中,并置中断标志位为1

9.在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐