前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >8051单片机的串行通信

8051单片机的串行通信

作者头像
zy010101
发布2019-05-25 20:02:45
5720
发布2019-05-25 20:02:45
举报
文章被收录于专栏:程序员程序员

计算机的数据交换有两种方式,分别是串行通信和并行通信。

并行通信:我们以8位(一个字节)的数据为例,在并行通信下,8位数据是同时传输的,同时发送,同时接受。所以通信的双方需要一个公共的时钟信号。并行传输速度快,效率高。但是传输需要的数据线多,传输距离近。

串行通信:仍然以8位的数据为例,每一位数据都是分时发送的,接收方也是一位一位的接受。串行通信只需要一根数据线就可以,成本低。适用于大规模和远距离的数据传输。

异步传输模式:每个传输的字符都用起始位和终止位包装起来,在字符间允许有长短不一的间隙。

同步传输模式:一个数据块包含着许多连续的字符,在字符之间没有空闲。同步传输可以方便的实现某一通信协议要求的格式。

波特率:在这里定义为串行通信每秒钟传送的“位”的个数。即n波特 = n b/s。在RS-232C标准中,串行通信的波特率规定如下:600,1200,2400,4800,9600等。

串行口的波特率计算:

在方式0下,波特率固定为:F/12 (F为晶振频率)

方式2下,波特率固定为:F/32或者F/64 (取决于PCON寄存器的SMOD位,若SMOD = 1,则是F/32;否则为F/64)。

方式1和方式3:采用了T1定时器的溢出率作为波特率的发生器,因此计算公式为:

K*F/[32*12*(2^n - X)]。

其中若SMOD = 1,则K = 2,否则K = 1,F为晶振频率,n为定时器的位数(即定时器处于哪种工作模式下),X是定时器填充的初值。

在串行通信中要求通信双方拥有一致的波特率,但是有时候我们无法精确的达到那个波特率,此时我们需要考量在SMOD = 1和SMOD = 0这两种情况下哪一个所产生的相对误差较小,我们就去选用哪一个。

相对误差 = (实际值 - 理论值 ) / 理论值 * 100%

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档