我自己的是在大学期间学习的51单片机。那个时候51单片机在国内刚刚兴起不久。虽然之前系统学习了模拟电路和数字电路,但学习51单片机的时候还是似懂非懂,主要原因是自己动力不足,不知道这个东西学完了能干啥。另一个原因是上机实习的机会不多,还是那种老式的按键输入单片机指令的开发机,完全就没有电脑可以利用。
后来大学毕业了,为老板制作一些电子装置。这个时候才把51单片机又捡起来,边实践边开发,慢慢地终于理解了单片机的所有指令,以及如何合理使用这些指令让单片机干活。现在回头在脑子里重新把单片机的开发在脑子里过一遍的话,总结出一个个人的观点:学习单片机,不管是51系列的,还是ARM系列的,或者其它用于linux的,所谓的程序开发,其实不过是为了实现数据的转移。所有的指令都是围绕着这个核心来操作的。
就以51单片为例,比如如果用51单片机制作彩灯控制。那么你只要根据要求把指定的数据发送到指定的端口,就能实现流水灯之类的控制。这在本质上就是把指定的数据送入指定的端口。这种数据发送的操作,配合外部传感器、执行机构,就能实现智能化的操作。比如洗衣机、微波炉、电视机、空调等。所以单片机的本质上就是为了实现合理的数据发送、交换。其它的指令都是为了帮助实现这一个最终目的而增加的。
事实上计算机软件基本上也是这样。比如电子购物,把商家的数据通过浏览器页面或者APP应用呈现给买家,买家通过浏览、购买,完成交易。从而通过这种数据上的交换完成购物。数据库也好、操作系统也好,应用程序也好,架构也好,都是为了更快、更好地完成数据交换。
抓住这个本质去学习单片机,是不是能帮助你减少迷茫呢?