什么是單片機(jī)?單片機(jī)是如何工作的?
1.什么是單片機(jī)?
簡(jiǎn)單地說(shuō),單片機(jī)就是一個(gè)小計(jì)算機(jī)系統(tǒng)。為了說(shuō)明清楚這個(gè)問(wèn)題,得要從計(jì)算機(jī)說(shuō)起。提到計(jì)算機(jī),大家可能馬上會(huì)想到“顯示器、鼠標(biāo)、鍵盤(pán)”,不過(guò),這不是一個(gè)計(jì)算機(jī)的核心和關(guān)鍵,計(jì)算機(jī)的核心部分在一邊的機(jī)箱里呢。打開(kāi)機(jī)箱,可以看到,機(jī)箱里有主板、硬盤(pán)、光驅(qū)等。仔細(xì)觀察主板,這上面有CPU、內(nèi)存條、BIOS芯片,通常還有25針的打印機(jī)接口等,這些部件都是通過(guò)主板上的連線(xiàn)相互連接。
不論計(jì)算機(jī)復(fù)雜程度如何,它總是由運(yùn)算器,控制器,存儲(chǔ)器,輸入/輸出接口,總線(xiàn)這五個(gè)部分組成。通常運(yùn)算器和控制器被做成一塊芯片,也就是CPU(中央處理器)。在計(jì)算機(jī)主板上,內(nèi)存條和BIOS芯片就是存儲(chǔ)器,25針打印機(jī)接口就是輸出/輸出設(shè)備,而總線(xiàn)則被設(shè)計(jì)在主板上,即各部件相互連接的線(xiàn)路。
圖1
在一些應(yīng)用場(chǎng)合,人們不需要計(jì)算機(jī)完成十分復(fù)雜的運(yùn)算,但卻希望計(jì)算機(jī)小巧,可靠,價(jià)格低。于是人們就把組成計(jì)算機(jī)的這5個(gè)部分全部集成到一塊芯片上,也說(shuō)是一塊芯片就能構(gòu)成一個(gè)獨(dú)立的計(jì)算機(jī),在當(dāng)時(shí)的技術(shù)條件下,這是一件了不起的事情,于是人們就用這個(gè)特征來(lái)為之命名,稱(chēng)為“單片機(jī)”。
將構(gòu)成一個(gè)計(jì)算機(jī)所需要的5個(gè)部分全部都集成到一塊芯片中,這塊芯片是否要很大、價(jià)格是否很高呢?并非如此。如果要把圖1所示主板上的所有元件都集成到一塊芯片中,那當(dāng)然非常昂貴,可能技術(shù)上也無(wú)法實(shí)現(xiàn),但很多單片機(jī)中所需要用到的功能完全沒(méi)必要那么強(qiáng)大,因此很多單片機(jī)體積很小,價(jià)格也很低。如市場(chǎng)上常見(jiàn)的單片機(jī)有8,14,16,18,20,28,40,84等引腳,有些甚至只有6個(gè)引腳,如圖2所示是微芯公司(Microchip)發(fā)布的一款6引腳單片機(jī)。而價(jià)格從幾元到幾十、上百元的都有,有些品種在大批量定購(gòu)時(shí)甚至可以低至1元以下。
圖2
剛接觸到單片機(jī)的人往往會(huì)有個(gè)疑惑:既然人們已經(jīng)有能力制造功能強(qiáng)大的計(jì)算機(jī),為何還要生產(chǎn)些功能不強(qiáng)的計(jì)算機(jī)?其實(shí),功能強(qiáng)弱并不是決定是否生產(chǎn)的決定因素,市場(chǎng)需要才是關(guān)鍵。比如,用來(lái)控制一臺(tái)電箱的計(jì)算機(jī)顯然沒(méi)必要使用“奔騰”芯片的強(qiáng)大運(yùn)算能力,只要進(jìn)行非常簡(jiǎn)單的計(jì)算,作個(gè)比較,看一看溫度是否在所控制區(qū)間之內(nèi),然后再做出相應(yīng)的控制就行了。
單片機(jī)在人們的生活中、工農(nóng)業(yè)生產(chǎn)設(shè)備中處處有應(yīng)用,例如各定時(shí)裝置、自動(dòng)控制裝置等。愛(ài)好者學(xué)習(xí)單片機(jī)應(yīng)該注意觀察事物,找到自己周?chē)軌蚴褂脝纹瑱C(jī)的場(chǎng)合,從而將學(xué)到的知識(shí)應(yīng)用到實(shí)際中去。例如,使用單片機(jī)技術(shù)改造傳統(tǒng)的機(jī)電設(shè)備、在特定的場(chǎng)合使用單片機(jī)替代plc等就有著廣闊的應(yīng)用前景;又如,使用單片機(jī)控制電扇、抽油煙機(jī)、空調(diào)等,從而制作出具有更強(qiáng)功能、能夠通用的控制器,也是可以嘗試的。
2.單片機(jī)是如何工作的?
單片機(jī)的工作過(guò)程就是一個(gè)不斷“取指令-分析指令-執(zhí)行指令”的過(guò)程。單片機(jī)的程序以一條一條指令的形式存放在程序存儲(chǔ)器中,單片機(jī)開(kāi)始工作后,就從程序存儲(chǔ)器的特定位置開(kāi)始取指令,然后由單片機(jī)內(nèi)部的控制器對(duì)指令進(jìn)行分析,根據(jù)指令要求,進(jìn)行“取數(shù)、送數(shù)、算術(shù)運(yùn)算、邏輯運(yùn)算、跳轉(zhuǎn)”等基本操作中的一種或幾種,這些操作都在一個(gè)規(guī)定的周期中完成,執(zhí)行完了以后,到下一個(gè)存儲(chǔ)器單元中取指令,重復(fù)剛才的操作(當(dāng)然,這些要執(zhí)行的操作具體內(nèi)容可能跟上一次不一樣了),如此不斷重復(fù),直到斷電為止。這里所說(shuō)的“存儲(chǔ)器特定位置”、“規(guī)定的周期”等與單片機(jī)的型號(hào)有關(guān),下面以51系列單片機(jī)為例來(lái)說(shuō)明。
在51系列單片機(jī)中有一個(gè)名為PC的寄存器(就是用來(lái)存數(shù)的一個(gè)容器),在單片機(jī)復(fù)位后,這個(gè)寄存器中的內(nèi)容被置為0000H,單片機(jī)內(nèi)部的控制器總是根據(jù)PC寄存器中的值去相應(yīng)的程序存儲(chǔ)器單元取指令,因此,開(kāi)機(jī)后,將從0000H單元取第一條指令,分析執(zhí)行,同時(shí),PC值將作相應(yīng)的調(diào)整,指向?qū)⒁獔?zhí)行的下一條指令的位置,下一條指令的位置在哪里呢?對(duì)于51單片機(jī)來(lái)說(shuō),一條指令可能占用一個(gè)字節(jié)、二個(gè)字節(jié)或三個(gè)字節(jié),如果第一條指令是單字節(jié)指令,取完第一條指令以后,PC的值就會(huì)變?yōu)?001H,因此,第一條指令執(zhí)行完畢以后,將從0001H單元中取出第二條指令來(lái)執(zhí)行,以此類(lèi)推。如果程序是順序執(zhí)行的,PC的值將始終不斷增加,如果程序中有跳轉(zhuǎn)指令,該指令將影響PC中的值,使PC中的值指向?qū)⒁獔?zhí)行的下一條指令所在地址單元。這種跳轉(zhuǎn)既可能是正向的,例如由0000H跳轉(zhuǎn)到0030H,也可能是反向的,即往回跳轉(zhuǎn),如由200H跳轉(zhuǎn)到100H。正是由于指令可以影響到PC中的值,才使得程序可以實(shí)現(xiàn)“分支”、“循環(huán)”等各種功能。那么,執(zhí)行一條指令的時(shí)間又是多少呢?對(duì)于51單片機(jī)來(lái)說(shuō),指令執(zhí)行時(shí)間有三種可能,單周期、雙周期和四周期,不管一條指令需要做多少工作,都必然在規(guī)定的時(shí)間內(nèi)完成。
編輯:admin 最后修改時(shí)間:2018-05-08