不一样的51 教程
概念若干:数字?它是什么?它能干什么
写在前面
一直以来,我都不太当那些什么教程是教程,经常只是当成一种资料。而我也从来没有看过什么视频教程,一个是网速太渣,下起来太浪费表情。另一个是我更喜欢看书。请不要认为这是 骄傲,(曾经有人说我“眼睛长到额头上了”),我只是想表达一种不一样的观点和学习方式。
曾经有写过一两个简单的比较另类的关于51 理解的文章。不过一直都没有好好写一整套全的,认识的一些朋友,有刚刚开始接触51 单片机的,由于他们不是电类专业,经常对51 很陌生,他们问我该怎么学?有没啥教程推荐。于是我就很想把自己对于51 的理解告诉他们,希望他们能有一个整体上的感觉——我想传达一种概念:这种东西就像内功,你看不到它,也很“偷师”什么的,但是拥有它的人,根本不需要什么教程,他需要的除了数据手册就是资料——我是说那些什么寄存器地址啊,寄存器定义 啊之类的设计参考。
这些时间里,正事没干多少,想法乱七八糟。心想还是实实在在做点事情。尽管51 单片机我只能说是基本了解,而且我可能渐渐远离它,但我还是想好好地写这套东西,算是一个自我梳理的过程,如果能对你有帮助,不胜荣幸。
闲话少说,开始正题。在开始讲51 的内容以前,我想先说几个概念:数字(电路),单片机。并试图简单阐述清楚,这个东西,到底是个什么玩意,到底能干什么?假如你有数字电路基础,或者对数制一类的概念清楚,请自行跳过,以免浪费您的时数字这里说的“数字”当然是与“模拟”对应的数字。
最简单的说法,就是用一连串0 和1 组成的数据串计数的记数系统。对比十进制,可以简单理解它。当你看到 “345”这个数字的时候,虽然你不会去想,它有 3 个100,4 个10,5 个1,但你心里一清二楚。(我没查证)我们有十个手指,所以我们拥有了十进制,0 到9.但是,半导体的世界里,它只有 通 和 断 两个状态。所以,它只有二进制。
二进制是什么?二进制是0 和1,二进制是 通 和 断,二进制是 灯亮灯灭。请记住——所谓X 进制,就是有X 个截然不同的状态用于区别,正如我们有十个手指,它们都是不一样的。关于二进制和我们熟悉的十进制之间的转换,其实你可以对比十进制,灵活点的人估计已经猜出来了,假如没有,也不要紧,这样的资料网上,书上多的是,请自行查阅。那么我们的到这些数字有什么用?这里,我以 灯亮灯灭 为例说明。学习51 的入门任务就是点亮LED。很多人也提到自己对51 的兴趣直接来源于那些闪烁的LED。我们可以设计电路,使输入一个信号为1 时,灯灭,为0 时,灯亮(反之亦可)。你看到大街上的红绿灯了吗?假设控制 红黄绿三个颜色的就是一个一个的二进制位的状态。
现在我们定义 这三个位对应 红 绿 黄,1 为灭,0 为亮。 按照 红灯亮 黄灯亮(中间缓冲),绿灯亮 的顺序依次改变。那我们就等于一直在输出3 个3 位二进制数 011 110 101,它们如果换成十进制数是(3,6,5)。单单看这三个数字 3 6 5,如果不告诉你它来源于哪里,不要说你,任谁都猜不到它到底是什么意思。其实事情就是这样——一个数字,一个二进制数字,当我们给每一位赋予了不一定的含义,那些看起来毫无规律莫名其妙的数据就有了意义(特别是十进制形式时。)
当你理解了上述的内容。我首先可以剧透的一个内容是:单片机也好,任何数字系统都好,依我的个人理解,它的核心工作就是处理数字——移动到不一样的位置,修改它,对它进行运算.......而这些最终的目的只有一个——获取和设置我们想要的数字——然后通过它们感知和影响真实的物理世界。