我們學(xué)習(xí)單片機(jī)時(shí),把代碼編譯后燒錄到單片機(jī)上,單片機(jī)就能控制外設(shè)工作,如LED的亮滅閃爍。
那么,代碼是如何控制硬件的呢?
敲入代碼,其實(shí)就是通過鍵盤敲入高低電平,雖然之間經(jīng)過了好幾輪抽象和轉(zhuǎn)換。
程序本身就是高低電平的組合;它通過在CPU上執(zhí)行來模擬各種決策過程;同時(shí),計(jì)算機(jī)就是一堆開關(guān)。
那么,通過指令向某些地址寫出數(shù)據(jù)(訪問特定地址是通過各種尋址機(jī)制/指令完成的,歸根結(jié)底也可以說是通過開關(guān)切換,改變了電路拓?fù)洌偷扔陂_啟/關(guān)閉了對應(yīng)地址上的某個(gè)開關(guān);這個(gè)開關(guān)可以是類似CPU內(nèi)部那樣的一組三極管,也可以是通向另外一個(gè)繼電器的信號線——這個(gè)信號就促使繼電器閉合,于是電機(jī)導(dǎo)通……
就好象人開汽車一樣,神經(jīng)發(fā)出的微不足道的電脈沖經(jīng)過肌肉放大,影響了涉及數(shù)百甚至數(shù)千馬力的能量洪流的發(fā)動(dòng)機(jī)/變速箱的運(yùn)轉(zhuǎn),然后汽車就開走了。
軟件在工作的時(shí)候也是實(shí)體,軟件的實(shí)質(zhì)就是電流信號,用電壓的高低代表不同是信息,用這些電流信號去控制邏輯電路的通斷,靠邏輯電路的通斷來控制硬件的工作。
說到底軟件就是起到一個(gè)開關(guān)信號的作用,開關(guān)要工作,必須保證硬件是加電的,沒有接通電源的硬件是無法用軟件來控制的。就好比沒有插上電源的臺燈,你怎么按開關(guān)都是不會(huì)亮的。
任何軟件在運(yùn)行前都要有一個(gè)將其轉(zhuǎn)化為電流信號的實(shí)體化過程,你寫在紙上的軟件代碼是永遠(yuǎn)也不能控制硬件的。
早期電腦用人工接線輸入程序,相當(dāng)于用人體的力量將軟件代碼實(shí)體化為電信號;現(xiàn)在我們用的軟盤、硬盤是通過磁頭將程序代碼轉(zhuǎn)化為電信號,光盤需要通過光頭將程序代碼轉(zhuǎn)化為電信號等等。
比如CPU從存儲(chǔ)器或高速緩沖存儲(chǔ)器中取出指令,放入指令寄存器,并對指令譯碼。它把指令分解成一系列的微操作,然后發(fā)出各種控制命令,執(zhí)行微操作系列,從而完成一條指令的執(zhí)行。
利用你輸入的能量改變輸出的結(jié)果,形成多米諾骨牌一樣的效應(yīng),最后輸出了結(jié)果,就比如你按手機(jī)音量鍵,給單片機(jī)一個(gè)信號,就是用硬件控制了硬件,屏幕顯示音量變化,通過你按鍵開始的,或者你觸摸屏幕,用語音控制,總之就是人為的輸入一個(gè)能量,在硬件上形成了一個(gè)信號,才能驅(qū)動(dòng)信號,而軟件只是一種顯現(xiàn)出來的狀態(tài)而已,你用鍵盤輸入的匯編,C,Java,都是人為輸入了硬件的信號,才有你以為的軟件控制硬件,但是啟始的信號都來自人為的輸入。
-
單片機(jī)
+關(guān)注
關(guān)注
6061文章
44864瀏覽量
645964 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70174 -
燒錄
+關(guān)注
關(guān)注
8文章
284瀏覽量
36125
發(fā)布評論請先 登錄
如何使用MATLAB代碼控制連接到Arduino板的LED

單片機(jī)基礎(chǔ):代碼如何控制硬件的?

零編碼生成智能硬件APP代碼
如何優(yōu)化控制算法的代碼
Python控制硬件
基于開放源代碼的硬件設(shè)計(jì)方法研究
基于開放源代碼的硬件設(shè)計(jì)方法研究
怎樣僅使用3個(gè)Arduino引腳控制8個(gè)輸出數(shù)量的倍數(shù)所需的硬件和代碼

直流電機(jī)控制代碼

代碼是如何控制硬件的?

單片機(jī)如何通過代碼控制硬件:一名工程師的分享

評論