單片機(jī)跑起來第二章:二進(jìn)制
將“二進(jìn)制”單獨(dú)拿出來作為一節(jié)來講,是因為它是一個極為基礎(chǔ)的概念。但是很多人對二進(jìn)制并沒有形象的認(rèn)識,甚至有一些已經(jīng)入門、稍有開發(fā)經(jīng)驗的人對它的理解仍然比較模糊。所以振南認(rèn)為有必要將它以一種更為形象、通俗而又深刻的方式著重來進(jìn)行闡述,以便給我們以后的學(xué)習(xí)打下堅實的基礎(chǔ)。
我們?nèi)祟愖怨乓詠矶荚谘赜靡环N被認(rèn)為非常自然的計數(shù)方式,即十進(jìn)制。它的原理非常簡單,即“滿十進(jìn)一”(為什么是十進(jìn)制,究其根源是因為我們有十根手指)。如果”XY”是一個十進(jìn)制的2位數(shù)的話,那么它的每一個位上將可能出現(xiàn)0~9這十個數(shù)字。某一位當(dāng)前是9,如果再+1便會歸0,同時向它的更高一位進(jìn)1。這就是計數(shù)的基礎(chǔ)原理(不論進(jìn)制如何都是如此)。
既然人類已經(jīng)習(xí)慣了使用了十進(jìn)制,那為什么要在單片機(jī)中使用二進(jìn)制呢?把它設(shè)計成十進(jìn)制不好嗎?在計算機(jī)問世的初期,或是在一些技術(shù)狂熱分子中確實有人嘗試制造出其它進(jìn)制的計算機(jī)。但不論使用何種進(jìn)制,振南前面所介紹的CPU體系中的各種基本內(nèi)容都是必須要遵循和實現(xiàn)的,比如尋指令與執(zhí)行、總線的操作等等。好,那振南就以總線操作中的一個環(huán)節(jié)—“CPU向地址總線給出要訪問的存儲器中的存儲單元的地址”為例,用十進(jìn)制來進(jìn)行實現(xiàn)。
假設(shè)要訪問的地址是(3456)10,請看圖1.20。
圖1.20 CPU以十進(jìn)制方式向存儲器產(chǎn)生地址
很明顯,要以十進(jìn)制方式傳輸3456這個數(shù)值,我們就需要用4條地址線,每一條地址線上分別傳輸3、4、5、6這四個數(shù)字。敢問大家,這該如何傳呢?一條線如何能表達(dá)0~9這十個數(shù)字呢?有人說:“可以?。∥野?V等分為10份,0V~0.5V代表0,0.5V~1V代表1,依此類推,4.5V~5V代表9。”不錯,很聰明,這就是傳說中的“模擬計算機(jī)”的作法。它的信號線上傳輸?shù)氖悄M電壓信號,而非數(shù)字信號。
雖然上面所說的方法是可行的,但有很多因素決定了人們不會去這樣作:
電路的實現(xiàn)上難度比較大,模擬電路的設(shè)計比數(shù)據(jù)邏輯電路要復(fù)雜的多;
傳輸速度不高,模擬信號的產(chǎn)生與采集接收比數(shù)字信號要慢;
穩(wěn)定性和抗干擾能力比較弱,僅僅靠0.5V的壓差來確定傳輸?shù)臄?shù)值,極易出現(xiàn)錯誤;
功耗很難降低,模擬電路的復(fù)雜度和規(guī)模以及其它因素注定其功耗較大。
……
針對于第3條,有人曾經(jīng)提出過疑問:“我可以把電壓抬高啊,可以將5V定義為10V或20V,這樣壓差不就拉開了嗎?”聰明,不過你考慮過功耗的問題嗎?
我們還是用二進(jìn)制的方式來進(jìn)行實現(xiàn)吧。(3456)10轉(zhuǎn)化為二進(jìn)制是(110110000000)2,請看圖1.21。
圖1.21 CPU以二進(jìn)制方式向存儲器產(chǎn)生地址
二進(jìn)制是滿二進(jìn)一,將一個十進(jìn)制的數(shù)值轉(zhuǎn)化為二進(jìn)制其位數(shù)一定會變多,所以我們就需要更多的地址線。二進(jìn)制數(shù)的每一位上只能表示0和1這兩個數(shù)字,這對應(yīng)于地址線上使用兩個電平即可實現(xiàn),比如0V和5V(實際可能是0V~2.xV表示0,2.xV~5V表示1)。這樣作的好處是顯而易見的,電路設(shè)計的難度下降了很多,而且抗干擾能力也比較強(qiáng)。更重要的是,信號的傳輸速率可以作到比較高,最終實現(xiàn)計算機(jī)系統(tǒng)整體性能的提升。另外,二進(jìn)制也使得芯片的功耗可以大幅度地降低,因為我們可以將高電平定義為3.3V、1.8V,甚至是1.2V。(高電平電壓定義得越低,單片機(jī)信號從低電平爬升到高電平的速度越快。因此,降低電平電壓將有利于時鐘頻率的提高。)
綜上所述,大家應(yīng)該已經(jīng)比較深刻地認(rèn)識到計算機(jī)系統(tǒng)中使用二進(jìn)制的重要意義了。二進(jìn)制是計算機(jī)的根基,是底層CPU硬件以及很多相關(guān)電路實現(xiàn)的基礎(chǔ)。所以,在我們所作的與單片機(jī)相關(guān)的很多開發(fā)和研究工作中,會大量涉及到二進(jìn)制的概念和應(yīng)用。