代码是如何驱动硬件的?

代码是如何驱动硬件的
CPU有其自己的语言系统,它只能识别二进制代码,我们称之为机器语言,它全部由0或1组成。
1、源代码的编译/解释
源代码的编译和解释就是把使用高级语言编写的源程序翻译成等效大的二进制代码,也就是CPU能够识别的机器语言。
编译或解释他们的操作方法不同,运行的效果也不同、但是最终的结果都是二进制代码。
我们的代码经编译之后,在CPU看来,就是一组特定的高低电平的组合。具体到单片机的开发中。
我们的源程序如何被单片机识别,
我们使用keil软件编写源程学,经过编译之后生成HEX文件。打开这个文件,打开这个文件,该文件以行为单位。(看图2),每行以冒号开头,内容全被为16进制代码。
16进制代码和机器语言中的二进制代码有什么区别呢?
16进制转换成二进制代码不是机器语言。
16进制代码的每一个字节都有其特定的含义。比如数据长度,起始地址、数据类型等信息。并非机器语言。
为什么不直接生成二进制代码?
HEX代码子弹校验位,在编译的时候能检验代码是否有误,能够为代码的传输、存储带来便利。而二进制代码却没有这个功能。
通过程序烧写,把16进制代码转换成二进制代码。这样CPU(单片机)就能识别了。

图1

图2

图3

图4
2、CUP是海量三极管的组合。
可以把CPU看作是海量的开关组合。这个开关由三极管组成。
我们追溯计算机的发展历史人类的第一台万用型计算机马克一号,它拥有三千多汁继电器,这也是它的核心零部件。所以它也被称作为继电器计算机。继电器在这台计算机中的作用就是开关。而现在我们使用三极管来代替它,它们的原理也是一样的。

图5
CPU是由工程师精心设计的。且规模庞大的开关组。当给这个开关组输入一组特定的高低电平组合时就会导致其内部出现复杂的开关动作。最终产生另一种高低电平的组合作为输出。输出的电平经过放大电路,模数转换电路等变换之后,就可以驱动相应的硬件动作了。

图6