如上图:现在我们最关心的问题就是:如何把 A 中的 110 数据传递到 B 当中去???
上面这个问题就是我们本次学习的重点。有人会问?那如何把 B 的数据传递给 A 呢?傻小子,你把上面的问题搞会了,反过来是不是就可以了?如果你不会反过来,那我只能说一句,你那么多头发给我吧。
编程简介:
你和别人远程说话,需要什么?(电话呀!)我擦咧,你怎么这么厉害?对了,你们需要一个交流的工具。好,51单片机也需要一个交流的工具:它就是SBUF,SBUF,SBUF重要的东西讲三遍。它是个什么玩意呢?首先我先将上面的图优化一下
这幅图怎么理解呢?A和自己的SBUF交流。B和SBUF交流。而(A的SBUF) 通过 tx,rx 连接(B的SBUF)。这样就间接的实现了 A 和B交流。
类似于:小红和小红的iphone说话,小明和小明的华为说话。他们两部手机通过电磁波连接在了一起。就间接的实现了小红和小明说话。 -------- 一般这里要跟上作者名字,卒于 xxxx 年。
很显然,如果A想发数据给B,它就要告诉 SBUF 想发的数据是什么!比如发送 110 ,那么 A 的程序就应该写成 SBUF = 110;而B想要知道 A 传输过来的数据是什么,它就要问 SBUF,刚刚传过来的数字是多少,并且B需要给 SBUF 盛放数据的地方?程序就是:data = SBUF。这里的 data 就能读取到刚刚 A 那边发过来的数据了,也就是 110.
程序也就可以这么写。
是不是突然觉得很简单?那当然啦,这种只能算是示意程序,就是有了大致功能,但是根本没用。为什么呢?因为你见过一个手机没有开机,就能和别人打电话的?千万别和我说什么乔布斯的 iphone 1000 。我没用过,我也不知道。
下面,我们需要做的,就是让 SBUF 可以正常开机工作。怎么开机呢?这就要说到 51 单片机串口最奇葩的地方,它需要使用定时器来驱动串口,跟个傻子似的!!!一个一个来吧。
首先我们介绍以下 51 串口的控制器:
很简单,就一个 SCON 控制单元。我们需要关注的就是 SM0 和SM1 ,REN,TI,RI。
1,SM0 和SM1 的设置
其实我们用的最多的就是方式 1 :10位异步收发器(8位数据)。这是什么意思呢?还记得上节说的,我们