我們學習單片機時,把代碼編譯后燒錄到單片機上,單片機就能控制外設工作,如LED的亮滅閃爍。
那么,代碼是如何控制硬件的呢?
敲入代碼,其實就是通過鍵盤敲入高低電平,雖然之間經過了好幾輪抽象和轉換。
程序本身就是高低電平的組合;它通過在CPU上執行來模擬各種決策過程;同時,計算機就是一堆開關。
那么,通過指令向某些地址寫出數據(訪問特定地址是通過各種尋址機制/指令完成的,歸根結底也可以說是通過開關切換,改變了電路拓撲),就等于開啟/關閉了對應地址上的某個開關;這個開關可以是類似CPU內部那樣的一組三極管,也可以是通向另外一個繼電器的信號線——這個信號就促使繼電器閉合,于是電機導通……
就好象人開汽車一樣,神經發出的微不足道的電脈沖經過肌肉放大,影響了涉及數百甚至數千馬力的能量洪流的發動機/變速箱的運轉,然后汽車就開走了。
軟件在工作的時候也是實體,軟件的實質就是電流信號,用電壓的高低代表不同是信息,用這些電流信號去控制邏輯電路的通斷,靠邏輯電路的通斷來控制硬件的工作。
說到底軟件就是起到一個開關信號的作用,開關要工作,必須保證硬件是加電的,沒有接通電源的硬件是無法用軟件來控制的。就好比沒有插上電源的臺燈,你怎么按開關都是不會亮的。
任何軟件在運行前都要有一個將其轉化為電流信號的實體化過程,你寫在紙上的軟件代碼是永遠也不能控制硬件的。
早期電腦用人工接線輸入程序,相當于用人體的力量將軟件代碼實體化為電信號;現在我們用的軟盤、硬盤是通過磁頭將程序代碼轉化為電信號,光盤需要通過光頭將程序代碼轉化為電信號等等。
比如CPU從存儲器或高速緩沖存儲器中取出指令,放入指令寄存器,并對指令譯碼。它把指令分解成一系列的微操作,然后發出各種控制命令,執行微操作系列,從而完成一條指令的執行。
利用你輸入的能量改變輸出的結果,形成多米諾骨牌一樣的效應,最后輸出了結果,就比如你按手機音量鍵,給單片機一個信號,就是用硬件控制了硬件,屏幕顯示音量變化,通過你按鍵開始的,或者你觸摸屏幕,用語音控制,總之就是人為的輸入一個能量,在硬件上形成了一個信號,才能驅動信號,而軟件只是一種顯現出來的狀態而已,你用鍵盤輸入的匯編,C,Java,都是人為輸入了硬件的信號,才有你以為的軟件控制硬件,但是啟始的信號都來自人為的輸入。
-
單片機
+關注
關注
6043文章
44621瀏覽量
638583 -
代碼
+關注
關注
30文章
4828瀏覽量
69055 -
燒錄
+關注
關注
8文章
266瀏覽量
35720
發布評論請先 登錄
相關推薦
單片機基礎:代碼如何控制硬件的?
![單片機基礎:<b class='flag-5'>代碼</b>如何<b class='flag-5'>控制</b><b class='flag-5'>硬件</b>的?](https://file1.elecfans.com/web2/M00/C1/5F/wKgaomXVnK-ABBjbAAA6eiaoiTs578.png)
零編碼生成智能硬件APP代碼
如何優化控制算法的代碼
Python控制硬件
基于開放源代碼的硬件設計方法研究
基于開放源代碼的硬件設計方法研究
怎樣僅使用3個Arduino引腳控制8個輸出數量的倍數所需的硬件和代碼
![怎樣僅使用3個Arduino引腳<b class='flag-5'>控制</b>8個輸出數量的倍數所需的<b class='flag-5'>硬件</b>和<b class='flag-5'>代碼</b>](https://file.elecfans.com/web1/M00/A9/11/pIYBAF2QXEeAViCvAAAxLmcDFiA764.jpg)
代碼是如何控制硬件的?
![<b class='flag-5'>代碼</b>是如何<b class='flag-5'>控制</b><b class='flag-5'>硬件</b>的?](https://file1.elecfans.com/web2/M00/82/B4/wKgaomRd21mAVL45AAA6eiaoiTs860.png)
評論