|
在上課之前,我們先來復(fù)習(xí)一下《第三課:單片機常用名詞解釋》中有關(guān)存儲器的內(nèi)容。 存儲器:用來存放計算機中的所有信息:包括程序、原始數(shù)據(jù)、運算的中間結(jié)果及最終結(jié)果等。 只讀存儲器(ROM):只讀存儲器在使用時,只能讀出而不能寫入,斷電后ROM中的信息不會丟失。因此一般用來存放一些固定程序,如監(jiān)控程序、子程序、字庫及數(shù)據(jù)表等。ROM按存儲信息的方法又可分為以下幾種: 1、掩膜ROM: 掩膜ROM也稱固定ROM,它是由廠家編好程序?qū)懭隦OM(稱固化)供用戶使用,用戶不能更改內(nèi)部程序,其特點是價格便宜。 2、可編程的只讀存儲器(PROM): 它的內(nèi)容可由用戶根據(jù)自已所編程序一次性寫入,一旦寫入,只能讀出,而不能再進行更改,這類存儲器現(xiàn)在也稱為OTP(Only Time Programmable)。 3、可改寫的只讀存儲器EPROM: 前兩種ROM只能進行一次性寫入,因而用戶較少使用,目前較為流行的ROM芯片為EPROM。因為它的內(nèi)容可以通過紫外線照射而徹底擦除,擦除后又可重新寫入新的程序。 4、可電改寫只讀存儲器(EEPROM): EEPROM可用電的方法寫入和清除其內(nèi)容,其編程電壓和清除電壓均與微機CPU的5V工作電壓相同,不需另加電壓。它既有與RAM一樣讀寫操作簡便,又有數(shù)據(jù)不會因掉電而丟失的優(yōu)點,因而使用極為方便,F(xiàn)在這種存儲器的使用最為廣泛。 隨機存儲器(RAM): 這種存儲器又叫讀寫存儲器。它不僅能讀取存放在存儲單元中的數(shù)據(jù),還能隨時寫入新的數(shù)據(jù),寫入后原來的數(shù)據(jù)就丟失了。斷電后RAM中的信息全部丟失。因些,RAM常用于存放經(jīng)常要改變的程序或中間計算結(jié)果等信息。 RAM按照存儲信息的方式,又可分為靜態(tài)和動態(tài)兩種。 1、靜態(tài)SRAM:其特點是只要有電源加于存儲器,數(shù)據(jù)就能長期保存。 2、動態(tài)DRAM:寫入的信息只能保存若干ms時間,因此,每隔一定時間必須重新寫入一次,以保持原來的信息不變。 可現(xiàn)場改寫的非易失性存儲器: 這種存儲器的特點是:從原理上看,它們屬于ROM型存儲器,從功能上看,它們又可以隨時改寫信息,作用又相當(dāng)于RAM。所以,ROM、RAM的定義和劃分已逐漸的失去意義。 1、快擦寫存儲器(FLASH) 這種存儲器是在EPROM和EEPROM的制造基礎(chǔ)上產(chǎn)生的一種非易失性存儲器。其集成度高,制造成本低于DRAM,既具有SRAM讀寫的靈活性和較快的訪問速度,又具有ROM在斷電后可不丟失信息的特點,所以發(fā)展迅速。 2、鐵電存儲器FRAM 它是利用鐵電材料極化方向來存儲數(shù)據(jù)的。它的特點是集成度高,讀寫速度快,成本低,讀寫周期短。 通過前面的學(xué)習(xí),我們已知道存儲器是計算機的重組成部份。存儲器是由大量緩沖寄存器組成的,其用途是存放程序和數(shù)據(jù),使計算機具有記憶功能。這些程序和數(shù)據(jù)在存儲器中是以二進制代碼表示的。根據(jù)計算機的命令,按照指定地址,可以把代碼取出來或存入新代碼。 在這節(jié)課,我們的學(xué)習(xí)重點就是來研究一下存儲器的內(nèi)部結(jié)構(gòu)、工作原理及其存儲器的主要的技術(shù)指標(biāo)。 第一個要學(xué)習(xí)的問題:存儲器單元和存儲單元地址: 存儲器是由大量寄存器組成的,其中每一個寄存器就稱為一個存儲單元。它可存放一個有獨立意義的二進制代碼。一個代碼由若干位(bit)組成,代碼的位數(shù)稱為位長,習(xí)慣上也稱為字長。 每個存儲單元存放幾位二進制數(shù)呢?一般情況下,計算機中一個代碼的位數(shù)和它的算術(shù)運算單元的位數(shù)是相同的。例如,8051單片機中算術(shù)單元是8位,則字長就是8位。在計算機中把一個8位的二進制代碼稱為一個字節(jié)(Byte),常寫為B。對于一個8位二進制代碼的最低位稱為第0位(位0),最高位稱為第7位(位7)。
在計算機中的存儲器往往有成千上萬個存儲單元,為了使存入和取出不發(fā)生混淆,必須給每個存儲單元一個唯一的固定編號,這個編號就稱為存儲單元的地址。因為存儲單元的數(shù)量很大,我們不可能每個存儲單元都把線引到外部,如果每個存儲單元都引根線到外部,那一個8位的單片機就需外向外部引出65536根線了,這在現(xiàn)實中是不可能的。為了減少存儲器向外引出的地址線,在存儲器內(nèi)部都帶有譯碼器。根據(jù)二進制編碼、譯碼的原理,除地線公用之外,n根導(dǎo)線可以譯成2n個地址號。例如,當(dāng)?shù)刂肪為3根時,可以譯成23=8個地址號;地址線為3根時,可以譯成28=256個地址號。依此類推,在8051單片機中有16根地址線,也就是說在8051單片機中有216=65 536個地址號,地址號的多少就是我們尋址范圍的大小,也就是前面我們提到過的8051單片機的尋址范圍是64K。 從上面的介紹可以看出,存儲單元地址和這個存儲單元的內(nèi)容含義是不同的。存儲單元如同一個旅館的每個房間;存儲單元地址則相當(dāng)于每個房間的房間號;存儲單元內(nèi)容(二進制代碼)就相當(dāng)于這個房間的房客。 前面我們已講過,8051的單片機有16根地址線,它的存儲地址有216=65 536個,這么多的存儲地址,而地址線卻只有16根,我們怎么用16根地址線來控制這6萬多個存儲地址呢?接下來我們就這個問題與大家一起做個探討:在上節(jié)課《第九課:51單片機CPU的結(jié)構(gòu)》時我們已知道,在51單片機的內(nèi)部有一個叫做譯碼器的部件。用16根地址線來控制65536個存儲地址,就是用譯碼來實現(xiàn)的。 我們知道,計算機可以進行數(shù)學(xué)運算,這可令我們非常的難以理解,計算機嗎,里面只不過是一些電子元件組成的,怎能么可以進行數(shù)學(xué)運算呢?我們做數(shù)學(xué)題時如25+36是這樣做的,先在紙上寫25,然后在下面寫36,然后大腦運算,最后寫出結(jié)果,運算的原材料:25、36和結(jié)果61都是寫在紙上的。計算機中又是怎樣存放的呢?為了解決定個問題,我們先做一個實驗: 下面有一盞燈,我們知道燈要么亮,要么不亮,就有兩種狀態(tài),我們可以用“0”和“1”來代替這兩種狀態(tài),規(guī)定亮為“1”,不亮為“0”。南以上兩盞燈,一共有幾種狀態(tài)呢? 
上面已例出,兩盞燈可以表達成00 01 10 11四種狀態(tài),那么三盞燈呢? 三盞燈應(yīng)該就是可以表達成000 001 010 011 100 101 110 111八種狀態(tài),看下圖: 
如果是八盞燈呢?那么其狀就表達就是00000000 00000001 00000010。。。。。11111111 共256種狀態(tài)。 我們來看,上面這些000 001 010。。。。等等這些數(shù)不就是我們學(xué)過的二進制數(shù)嗎?本來燈的亮滅是一種物理現(xiàn)象,可當(dāng)我們把它們按一定的順序排列好后,燈的亮和滅就代表數(shù)字了。讓我們再抽象一步,燈為什么會亮呢?是因為輸出電路輸出高電平,給燈通了電。因此,燈亮和滅就可以用電路的輸出是高電平還是低電平來代替了。這樣,數(shù)字就和電平的高、低聯(lián)系上了。 位的含義:通過上面的實驗我們已知道:一盞燈亮或者說一根線的電平的高低,可以代表兩種狀態(tài):0和1。實際上這就是一個二進制位,困此我們把一根線(或者一盞燈)稱為一“位”,用BIT表示。 字節(jié)的含義:一根線可以表示0和1,兩根線可以表達00,01,10,11四種狀態(tài),也就是可以表示0到3,而三根給可以表達0至7,計算機中通常用8根線放在一起,同時計數(shù),就可以表達到0~255共256種狀態(tài)。這8根線或者8位就稱之為一個字節(jié)(BYTE)。不要問我為什么是8根而不是其它數(shù),因為我也不知道。(計算機是一個人造的世界,不是自然界,很多事情無法問為什么,只能說:字是一種規(guī)定,大家在以后的學(xué)習(xí)過程中也要注意這個問題)。 存儲器是用來存放數(shù)據(jù)的地方。它是利用電平的高低來存放數(shù)據(jù)的。也就是說,它存放的實際上是電平的高、低,而不是我們習(xí)慣認(rèn)為的1234這樣的數(shù)字。下面我們就來看看,單片機內(nèi)的存儲器是怎樣來尋址的,也就是怎么來找到我們存放在存儲器內(nèi)的數(shù)據(jù)。 |