- 51單片機應用基礎(C51版)
- 胡進德 丁如春 劉愛榮
- 2588字
- 2019-11-27 11:56:47
學習單元三 半導體存儲器
存儲器在計算機和單片機中用來保存數據、程序及其他各種信息。不同的單片機,其存儲器的類型與容量也不相同。由于單片機中使用的存儲器全都是半導體存儲器,因此我們首先介紹半導體存儲器的基礎知識。
一、半導體存儲器概述
1.隨機存取存儲器RAM和只讀存儲器ROM
半導體存儲器按存取數據方式的不同,分為隨機存取存儲器RAM(Random Access Memory,簡稱RAM)和只讀存儲器ROM(Read Only Memory,簡稱ROM)。
(1)RAM是一種可讀可寫的存儲器,也稱讀寫存儲器,即計算機和單片機的中央處理單元CPU在工作時對RAM中的數既可讀又可寫,其特點是電源斷電時存儲的數據將丟失。
(2)ROM是一種可讀不可寫的存儲器,即CPU在工作時對ROM中的數只可讀不可寫,其應用特點是電源斷電時ROM中的信息不會丟失。
表3-1對比了這兩種存儲器的特點、用途。在單片機中,通常將RAM作為存放數據的存儲器,而將ROM作為存放程序的存器。
表3-1 隨機存取存儲器和只讀存儲器對照表

2.RAM的分類及特點
隨機存取存儲器RAM按信息保存方式又可分為靜態RAM(Static RAM,簡稱SRAM)和動態RAM(Dynamic RAM,簡稱DRAM)。
(1)靜態RAM:只要有電加在存儲器上,數據就能長期保存。
(2)動態RAM:寫入的數據只能保留很短暫的時間,因此每隔一定時間需要重新寫入,此過程稱為“刷新”。
表3-2對比了這兩種RAM的儲存原理、特點和性能,在單片機中,通常將SRAM作為數據存儲器使用。
表3-2 靜態BAM與動態RAM對照表

3.ROM的分類及特點
只讀存儲器ROM按信息保存方式又可分為以下幾種類型:
(1)掩模ROM(Mask ROM,簡稱ROM)。生產廠家在制造芯片時已經把信息固化在存儲單元中,數據一旦寫入就不可重新改寫。
(2)可編程只讀存儲器PROM(Program ROM,簡稱PROM)。PROM中的內容是由用戶根據需要借助于專門的設備一次性寫入,但寫入后就不可更改。
(3)可紫外線擦除的可編程只讀存儲器EPROM(Erasable Programmable ROM,簡稱EPROM)。這種芯片表面有一個透明窗口,紫外線照射窗口后能擦除芯片內的全部內容。當需要改寫EPROM芯片的內容時,應先將EPROM芯片放入紫外線擦除器擦除芯片的全部內容,然后對芯片重新寫入數據。
(4)可以電擦除的可編程只讀存儲器EEPROM(Electrically Erasable Programmable ROM)也稱為E2PROM,可用電信號擦除,多次改寫,不需要專用設備。在用戶系統中可直接進行改寫(稱為在線改寫),且能以字節為單位進行擦除和改寫,而不是像EPROM那樣整體擦除。但存取速度慢。
E2PROM的最大缺點就是改寫信息的速度慢,隨著半導體存儲技術的發展,各種新的可現場改寫信息的非易失性存儲器被推出,且發展速度很快,其中應用最廣泛、最流行的就是快擦寫存儲器F1ash Memory。
(5)快擦寫存儲器Flash Memory(也稱為Flash ROM,有時簡稱為Flash)快擦寫存儲器是在E2PROM的基礎上改進而來的,但讀寫速度比一般E2PROM快得多,因此也將其稱為“閃存”。這種存儲器集成度高,制造成本低于DRAM,既有SRAM讀寫靈活和較高的訪問速度,又有只讀ROM斷電后信息不丟失的特點,故近年來發展迅速。其容量從最初的幾十kb發展到現在的幾個Gb。用這種存儲器生產的移動存儲盤就是我們常說的U盤。
特別強調:目前的新型51單片機都已經配置了Flash ROM,前面談到的單片機STC89C51/52RC和AT89S51/52都配置了Flash ROM。
二、存儲單元地址、存儲單元內容與存儲器容量
1.存儲單元地址
一個存儲器包含很多存儲單元,為了能區分不同的存儲單元,分別對這些存儲單元進行編號,這些編號稱為存儲單元地址或地址編碼(簡稱地址碼)。在計算機和單片機中,存儲單元地址一般用十六進制數從0000H開始編號,依次為0000H、0001H、0002H等。
存儲器存儲單元的數量由存儲器地址線的數量決定。如果某存儲器地址線有n根,則通過譯碼可產生2n個不同的地址碼,即可以尋找到2n個存儲單元。如某EPROM器件2764有13根地址線,其存儲單元數量為213=8192,地址碼為0000H~1FFFH。
51單片機最多有16根地址線,可訪問的存儲單元數量最多為216=65536,其地址碼為0000 H~FFFFH,如圖3-9所示。

圖3-9 存儲單元地址、存儲單元內容與存儲器容量
2.存儲單元內容
在51單片機中,每個存儲器有8根數據線,故每個存儲單元可以存放8位二進制數(8個bite),從最低位到最高位依次為D0、D1…D7,稱為1個字節(1個byte)。存儲單元存放的8位二進制數稱為存儲單元的內容或存儲單元的數據。
3.存儲器容量
存儲器存儲容量是指存儲器存儲單元的數量或者存儲器所有存儲單元可以存儲的二進制信息的總數量。
(1)用存儲單元的數量表示存儲容量時:
存儲容量=存儲單元數=2n字節
(2)用存儲單元可以存儲的二進制信息的總數量表示存儲容量時:
存儲容量=存儲單元數×數據總線位數=2n×D位
其中,n為存儲器地址線的數量,D為數據總線位數,51單片機數據總線是8位。
存儲器的容量常常很大,為了表示方便,常常以kb為存儲容量的單位(1kb=210=1024字節)。如某EPROM器件2764有13根地址線,其存儲容量為213=8kb;某SRAM器件6116有11根地址線,其存儲容量為211=2kb。
51單片機最多有16根地址線,其最大存儲容量為216= 64kb。
由于存儲單元的地址和存儲單元的內容都可以用十六進制表示,初學者需注意其差異,不要將它們混為一體。每個存儲單元都存放著一個字節的內容,存儲單元的地址和這個存儲單元的內容是兩個完全不同的概念,前面談到,地址是這個存儲單元的編號,而內容則是這個存儲單元存放的信息。每個存儲單元的地址是固定不變的,而每個存儲單元的內容可以讀出和寫入,是可變的。
三、存儲器的兩種基本操作
向存儲器存放或取出信息稱為訪問存儲器,向存儲器存放信息稱為寫操作(Write),取出存儲器中預先存放的信息稱為讀操作(Read)。在訪問存儲器時先由地址譯碼器將送來的存儲單元地址進行譯碼,找到相應的存儲單元,再由讀/寫控制電路根據送來的讀/寫命令確定訪問存儲器的方式,完成讀出或寫入操作,如圖3-10所示。

圖3-10 存儲器的讀寫過程
1.存儲器的兩種基本操作過程
(1)單片機讀存儲器中數據
第一步:單片機發出的地址信號經地址總線AB送至地址譯碼器,經過譯碼后找到(選中)存儲單元。
第二步:單片機通過控制總線CB發出讀命令,將存儲單元的數據讀出后送到數據總線DB上。
第三步:單片機將數據總線上數據讀入片內存儲單元。
(2)單片機將數據寫入存儲器
第一步:單片機發出的地址信號經地址總線AB送至地址譯碼器,經過譯碼后找到(選中)存儲單元。
第二步:單片機將片內存儲單元的數據送到數據總線上。
第三步:單片機通過控制總線CB發出寫命令,將數據總線DB上的數據寫入選中的存儲單元。
2.需注意的問題
(1)單元的內容被讀出后,并不破壞該單元的內容,該單元仍保留著原來的數據,即所謂的非破壞性讀出。
(2)存儲單元寫入了新的內容后,原來的內容就被新的內容所替代而不復存在。