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