单片机的学习与使用:串口

单片机的学习与使用:串口

1.串口

串行和并行

串行通信:发送/接收数据是一位一位按顺序进行传输。
特点:传输线多、价格贵、适合近距离的传输、传输速度快。
并行通信:发送/接收数据可以是多位同时传输的,多少位取决于硬件。
特点:传输线少、便宜、适合远距离传输、但是速度慢。

同步和异步

异步
所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为:

①以字符为单位传送信息。

②相邻两字符间的间隔是任意长。

③因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。

④异步方式特点简单的说就是:字符间异步,字符内部各位同步。
同步
所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点可以概括为:

①以数据块为单位传送信息。

②在一个数据块(信息帧)内,字符与字符间无间隔。

③因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。

通信方向

单工:数据只能向一个方向传送(跟哑巴说话)
半双工:可以来回传送数据,不能同时传送(对讲机)
全双工:可以来回传送数据,可以同时传送(两个人吵架)

串口工作

SOCN:串行口控制寄存器 (98H)
在这里插入图片描述SM0/SM1: 方式选择
SM2:多机通信控制
REN:串行接收允许
TB8: 在方式2或方式3,它为要发送的第9位数据,按需要由软件置位或清0。
RB8: 在方式2或方式3,是接收到的第9位数据。
TI:发送中断标志位 (方式0:发送结束硬件置1 发送前软件置0)
RI:接收中断标志位 (方式0:发送结束硬件置1 发送前软件置0)
TXD: P3.1引脚,发送数据口
RXD: P3.0引脚,接收数据口
SBUF:发送和接收的数据缓冲区

单片机串行口工作方式
单片机的学习与使用:串口_第1张图片

工作模式0 :同步移位寄存器
波特率固定为SYSclk/12
发送过程:(1).写SBUF(2).8位数据发完,TI=1(3).发送下一数据
接收过程:(1).REN=1(2).8位数据收完,RI=1(3).读SBUF
工作模式1:8位UART,波特率可变
波特率=2SMOD/32×(定时器/计数器1溢出率)
当单片机工作在12T模式时,定时器1的溢出率 = SYSclk/12/( 256 - TH1);
当单片机工作在6T模式时, 定时器1的溢出率 = SYSclk /6/ ( 256 - TH1)
10位 数据为一帧,从最低位开始发送
工作模式2:9位UART,波特率固定
波特率=2SMOD/64×(SYSclk系统工作时钟频率)
第九个数据是TB8、RB8(分别是发送和接收)位提供的
11位 数据为一帧,从最低位开始发送
工作模式3:9位UART,波特率可变
波特率可变方式同模式1
当单片机工作在12T模式时,定时器1的溢出率 = SYSclk/12/( 256 - TH1);
当单片机工作在6T模式时, 定时器1的溢出率 = SYSclk /6/ ( 256 - TH1)
11位 数据为一帧,从最低位开始发送

串口编程

1.选择相应工作模式
2.计算波特率
3.两种工作方式(查询和中断)
查询:
TI:当数据往外发送完毕时,TI变为1;
RI:当数据接收完毕时,RI变为1;
中断:
发送程序:发数据—>等待中断 —> 发送下一个数据
接收程序:等待中断,在中断中再接收下一个数据

#include"reg52.h"
 #define chus  -1
 #define commane  1
 #define com  0
 char str;
 void delay(unsigned long time )
 {
 	int i;
	int j;
 	for( i = 0;i<100;i++)
		for( j = 0;j

你可能感兴趣的:(单片机,串口使用,51单片机学习笔记)