C51单片机串口工作的四种方式总结
程序员文章站
2024-03-23 20:36:34
...
方式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
方式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.
上一篇: ucore lab1练习4
推荐阅读