我们学习单片机时,把代码编译后烧录到单片机上,单片机就能控制外设工作,如LED的亮灭闪烁。
那么,代码是如何控制硬件的呢?
敲入代码,其实就是通过键盘敲入高低电平,虽然之间经过了好几轮抽象和转换。
程序本身就是高低电平的组合;它通过在CPU上执行来模拟各种决策过程;同时,计算机就是一堆开关。
那么,通过指令向某些地址写出数据(访问特定地址是通过各种寻址机制/指令完成的,归根结底也可以说是通过开关切换,改变了电路拓扑),就等于开启/关闭了对应地址上的某个开关;这个开关可以是类似CPU内部那样的一组三极管,也可以是通向另外一个继电器的信号线——这个信号就促使继电器闭合,于是电机导通……
就好象人开汽车一样,神经发出的微不足道的电脉冲经过肌肉放大,影响了涉及数百甚至数千马力的能量洪流的发动机/变速箱的运转,然后汽车就开走了。
软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。
说到底软件就是起到一个开关信号的作用,开关要工作,必须保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。
任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。
早期电脑用人工接线输入程序,相当于用人体的力量将软件代码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。
比如CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。
利用你输入的能量改变输出的结果,形成多米诺骨牌一样的效应,最后输出了结果,就比如你按手机音量键,给单片机一个信号,就是用硬件控制了硬件,屏幕显示音量变化,通过你按键开始的,或者你触摸屏幕,用语音控制,总之就是人为的输入一个能量,在硬件上形成了一个信号,才能驱动信号,而软件只是一种显现出来的状态而已,你用键盘输入的汇编,C,Java,都是人为输入了硬件的信号,才有你以为的软件控制硬件,但是启始的信号都来自人为的输入。
全部0条评论
快来发表一下你的评论吧 !