【软件工程师学硬件】之 时序1

软件工程师对用代码表现业务已经是很习惯了,所以经常见到一个软件的代码动辄成千上万行已经不是什么奇怪的事情。但是他们不太习惯硬件的规矩多,这个协议那个协议,另外就是但凡做一个操作之前需要一堆的初始化,这是很头疼的事情,而且还有令他们非常不舒服的就是动辄就要查手册,所以软件工程师看到硬件工程师们手册不离口甚至还打印一份放在身边就非常不解。
这就是所谓的“隔行如隔山”。所以,很多人去硬件培训班需要很长时间才能适应,也差不多这个道理。
回归正题,时序是单片机中最基本的知识点,可以说是硬件大厦的基石,但是恰恰很多人非常迷惑,甚至科班学生也可能会一知半解。
先不说时序,我们先回忆一个场景。那年公司年会上,有一个节目,叫“抢凳子”,估计很多人都玩过,大致的过程是这样的,先在场地上摆放9张凳子,十个人站在旁边,游戏开始,击鼓,十个人就跑动起来,而且随着击鼓的节奏加快,跑动的速度也加快,当鼓声突然停下来,十个人就需要抢到一个凳子坐下来,没有抢到凳子的那个人就被淘汰。然后第二轮开始,这一轮又撤掉一张凳子,也就是说9个人抢8张凳子,同样的过程,结果也是淘汰掉一个人,游戏继续第三轮、第四轮。。。,直至剩下最后一张凳子,由两个人来抢,最终只能一个人抢到,那个人就是胜者。
说实在的,我不太适应这个游戏,原因是太激烈了。尽管这样,我还是觉得这个游戏挺刺激,尤其是击鼓节奏越来越快、大家围着凳子转圈的速度也越来越快的时候,的确有一种要窒息的感觉。
玩过之后,我就分析这个游戏,想一想,这个游戏要是没有击鼓这个操作行不行?嗯,肯定不行。为什么?因为没有节奏。没有突然停下击鼓这个操作行不行?嗯,肯定不行,因为大家得不到抢凳子的指令。
实际上,类似这种游戏非常多,比如击鼓传花等。这个游戏都有一个特点,就是需要一个节奏,而且节奏越来越快,但是你会发现,虽然节奏快,但是并不乱。然后会突然停止节奏。
我现在突发奇想,将游戏弄得更刺激一点,我不是击鼓开始的时候就跑,我规定击鼓3下之后开始跑,这是不是让大家更紧张?然后,我再修改一下游戏,就是将初试游戏的人数减掉一个,也就是由10个人改为9个人,并且进行编号,然后停止击鼓后,大家开始抢凳子,但是接着连续敲1下,表示1、4、7开始抢凳子,连续敲2下,2、5、8开始抢凳子,连续敲3下,3、6、9开始抢凳子,这个难度的确有些大,因为这得需要参加游戏的人仔细听击鼓的节奏。但是游戏更加刺激了。
大家有没有发现,我这个改变实际上改变了指令,就是将刚才的停止击鼓改成了停止击鼓后再击鼓若干次。
细心的读者可能发现一个细节,就是击鼓的节奏快慢对游戏的规则并没有什么影响,因为参加游戏的人只关心鼓声什么时间停止、停止过后又敲了几次鼓。
这个击鼓停止后又敲了几次鼓实际上是两个指令,其一是选择哪些编号可以抢凳子,同时还隐含立即抢凳子的指令,但这时候对其他人没有影响,其他人还在转圈。
我现在对这个游戏已经很感兴趣了,所以想将这个游戏进一步改编一下,我让击鼓的节奏不变,但是加了一个敲锣的动作,规则如下:
1、当同时敲锣和敲鼓的时候,游戏开始,大家开始转圈。注意:这个规则里,鼓还得不停地敲,别停下;
2、当不敲鼓、只敲锣的时候,开始抢凳子,并且还和之前的规则类似,敲一下锣,表示1、4、7抢凳子;敲两下锣,表示2、5、8抢凳子;敲三下锣,表示3、6、9抢凳子;
3、当再同时敲锣和鼓的时候,游戏暂停,然后又同时敲锣击鼓的时候,游戏继续。
这回游戏更刺激了,但是我还是不能忘记我的任务,就是让大家明白什么是时序。实际上,这个游戏就是简单的时序,我们可以将击鼓看作是时钟,没有击鼓行不行?不行,没有节奏。没有敲锣行不行?不行,没有指令。没有敲几下锣这个动作行不行?不行,没法选择哪批人抢凳子,游戏不激烈。
好了,今天的时序就聊到这里,下篇文章我继续和大家一起聊单片机的时序。

猜你喜欢

转载自blog.csdn.net/wwwmagic/article/details/91946472