官术网_书友最值得收藏!

3.1 8051單片機(jī)的存儲(chǔ)器結(jié)構(gòu)

3.1.1 存儲(chǔ)器的概念和分類(lèi)

存儲(chǔ)器是儲(chǔ)存二進(jìn)制信息的數(shù)字電路器件。微型機(jī)的存儲(chǔ)器包括主存儲(chǔ)器和外存儲(chǔ)器。外存儲(chǔ)器(外存)主要指各種大容量的磁盤(pán)存儲(chǔ)器、光盤(pán)存儲(chǔ)器等;主存儲(chǔ)器(內(nèi)存)是指能與CPU直接進(jìn)行數(shù)據(jù)交換的半導(dǎo)體存儲(chǔ)器。存儲(chǔ)器是計(jì)算機(jī)中不可缺少的重要部件。半導(dǎo)體存儲(chǔ)器具有存取速度快、集成度高、體積小、可靠性高、成本低等優(yōu)點(diǎn)。單片機(jī)是微型機(jī)的一種,它的主存儲(chǔ)器也采用半導(dǎo)體存儲(chǔ)器。

1.半導(dǎo)體存儲(chǔ)器的基本概念

位:信息的基本單位是位(bit或b),表示一個(gè)二進(jìn)制信息“1”或“0”。在存儲(chǔ)器中,位信息是由具有記憶功能的半導(dǎo)體電路實(shí)現(xiàn)的。例如用觸發(fā)器記憶一位信息。

字節(jié):在微型機(jī)中信息大多是以字節(jié)(Byte或B)形式存放的。一個(gè)字節(jié)由8位信息組成(1B=8bit),通常稱(chēng)做一個(gè)存儲(chǔ)單元。

存儲(chǔ)容量:存儲(chǔ)器芯片的存儲(chǔ)容量是指一塊芯片中所能存儲(chǔ)的信息位數(shù)。例如8K×8位的芯片,其存儲(chǔ)容量為8×1024×8位=65536位信息。存儲(chǔ)體的存儲(chǔ)容量則是指由多塊存儲(chǔ)器芯片組成的存儲(chǔ)體所能存儲(chǔ)的信息量,一般以字節(jié)的數(shù)量表示。

地址:地址表示存儲(chǔ)單元所處的物理空間的位置,用一組二進(jìn)制代碼表示。地址相當(dāng)于存儲(chǔ)單元的“單元編號(hào)”,CPU可以通過(guò)地址碼訪問(wèn)某一存儲(chǔ)單元,一個(gè)存儲(chǔ)單元對(duì)應(yīng)一個(gè)地址碼。例如,8051單片機(jī)有16位地址線,能訪問(wèn)的外部存儲(chǔ)器最大地址空間為64K(65536)字節(jié),對(duì)應(yīng)的16位地址碼為0000H~FFFFH:第0個(gè)字節(jié)的地址為0000H,第1個(gè)字節(jié)的地址為0001H,…,第65535個(gè)字節(jié)的地址為FFFFH。

存取周期:是指存儲(chǔ)器存放或取出一次數(shù)據(jù)所需的時(shí)間。存儲(chǔ)容量和存取周期是存儲(chǔ)器的兩項(xiàng)重要性能指標(biāo)。

2.半導(dǎo)體存儲(chǔ)器的分類(lèi)

半導(dǎo)體存儲(chǔ)器按讀、寫(xiě)功能可以分為隨機(jī)讀/寫(xiě)存儲(chǔ)器RAM(Random Access Memory)和只讀存儲(chǔ)器ROM(Read Only Memory)。

隨機(jī)讀/寫(xiě)存儲(chǔ)器RAM可以進(jìn)行多次信息寫(xiě)入和讀出,每次寫(xiě)入后,原來(lái)的信息將被新寫(xiě)入的信息所取代。另外,RAM在斷電后再通電時(shí),原存的信息全部丟失。它主要用來(lái)存放臨時(shí)的數(shù)據(jù)和程序。

RAM按生產(chǎn)工藝,可以分為雙極型RAM和MOS RAM,而MOS RAM又分為靜態(tài)RAM(SRAM)和動(dòng)態(tài)RAM(DRAM)。

(1)雙極型RAM:以晶體管觸發(fā)器作為基本存儲(chǔ)電路,存取速度快,但結(jié)構(gòu)復(fù)雜、集成度較低,比較適合用于小容量的高速暫存器。

(2)MOS RAM:以MOS管作為基本集成元件,具有集成度高、功耗低、價(jià)格便宜等優(yōu)點(diǎn),現(xiàn)在微型計(jì)算機(jī)一般采用MOS RAM。

只讀存儲(chǔ)器ROM的信息一旦寫(xiě)入后,便不能隨機(jī)修改。在使用時(shí),只能讀出信息,而不能寫(xiě)入,且在掉電后ROM中的信息仍然保留。它主要用來(lái)存放固定不變的程序和數(shù)據(jù)。

ROM按不同的編程寫(xiě)入方式,可以分為以下幾種。

(1)掩膜ROM:其存儲(chǔ)的信息在制造過(guò)程中采用一道掩膜工藝生成,一旦出廠,信息就不可改變。

(2)可編程只讀存儲(chǔ)器PROM:其存儲(chǔ)的信息可由用戶(hù)通過(guò)特殊手段一次性寫(xiě)入,但只能寫(xiě)入一次。

(3)可擦除只讀存儲(chǔ)器:其存儲(chǔ)的信息用戶(hù)可以多次擦除,并可用專(zhuān)用的編程器重新寫(xiě)入新的信息。可擦除只讀存儲(chǔ)器又可分為紫外線擦除的EPROM、電擦除的EEPROM和Flash ROM。

3.1.2 8051單片機(jī)存儲(chǔ)器的組織結(jié)構(gòu)

1.微型機(jī)存儲(chǔ)器的結(jié)構(gòu)形式

1)普林斯頓結(jié)構(gòu)

一般的微型機(jī)(如個(gè)人電腦PC機(jī)),它的存儲(chǔ)器采用普林斯頓結(jié)構(gòu),程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)器邏輯空間,統(tǒng)一編址(如圖3.1所示)。

2)哈佛結(jié)構(gòu)

8051單片機(jī)的存儲(chǔ)器則采用哈佛結(jié)構(gòu),程序與數(shù)據(jù)分為兩個(gè)獨(dú)立存儲(chǔ)器邏輯空間,分開(kāi)編址(如圖3.2所示)。8051單片機(jī)的數(shù)據(jù)存儲(chǔ)器空間和程序存儲(chǔ)器空間相互獨(dú)立。因?yàn)閱纹瑱C(jī)主要面向測(cè)控對(duì)象,通常有大量的控制程序和較少的隨機(jī)數(shù)據(jù)。為了將程序和數(shù)據(jù)分開(kāi),單片機(jī)使用較大容量的程序存儲(chǔ)器來(lái)固化程序代碼,使用少量的數(shù)據(jù)存儲(chǔ)器來(lái)存取隨機(jī)數(shù)據(jù)。程序在只讀存儲(chǔ)器ROM中運(yùn)行,不易受外界侵害,可靠性高。

圖3.1 普林斯頓結(jié)構(gòu)

圖3.2 哈佛結(jié)構(gòu)

2.8051存儲(chǔ)器地址空間的組成

8051單片機(jī)存儲(chǔ)器,從物理結(jié)構(gòu)上可分為4個(gè)存儲(chǔ)器地址空間:

(1)片內(nèi)程序存儲(chǔ)器空間;

(2)片外程序存儲(chǔ)器空間;

(3)片內(nèi)數(shù)據(jù)存儲(chǔ)器空間;

(4)片外數(shù)據(jù)存儲(chǔ)器空間。

8051單片機(jī)存儲(chǔ)器,從邏輯結(jié)構(gòu)上可分為3個(gè)存儲(chǔ)器地址空間:

(1)64KB程序存儲(chǔ)器;

(2)256B片內(nèi)數(shù)據(jù)存儲(chǔ)器;

(3)64KB片外數(shù)據(jù)存儲(chǔ)器。

3.8051存儲(chǔ)器的組織結(jié)構(gòu)

1)8051程序存儲(chǔ)器(ROM)的組織結(jié)構(gòu)

8051單片機(jī)有64KB 程序存儲(chǔ)器空間,空間地址為0000H~0FFFFH,根據(jù)引腳的不同輸入電平,來(lái)選擇片內(nèi)或片外低位存儲(chǔ)單元。

(31腳):訪問(wèn)程序存儲(chǔ)器選擇信號(hào)輸入線。當(dāng)為低電平時(shí),CPU只能訪問(wèn)外部程序存儲(chǔ)器;當(dāng)為高電平時(shí),CPU可訪問(wèn)內(nèi)部程序存儲(chǔ)器(當(dāng)8051單片機(jī)的PC值小于等于0FFFH時(shí)),也可訪問(wèn)外部程序存儲(chǔ)器(當(dāng)PC值大于0FFFH時(shí)),如圖3.3所示。

圖3.3 8051程序存儲(chǔ)器結(jié)構(gòu)示意圖

2)8051數(shù)據(jù)存儲(chǔ)器(RAM)的組織結(jié)構(gòu)

(1)64KB片外數(shù)據(jù)存儲(chǔ)器空間(與擴(kuò)展I/O接口共用)。

8051單片機(jī)外部可擴(kuò)展64KB的片外數(shù)據(jù)存儲(chǔ)器空間(與擴(kuò)展的外部I/O接口共用),空間地址為0000H~0FFFFH。注意:8051單片機(jī)擴(kuò)展的外部數(shù)據(jù)存儲(chǔ)器和外部I/O接口共用一個(gè)地址空間,統(tǒng)一編址。

(2)256B片內(nèi)數(shù)據(jù)存儲(chǔ)器。

8051內(nèi)部RAM有256個(gè)單元,空間地址為00H~0FFH,包括片內(nèi)RAM和特殊功能寄存器SFR。8051單片機(jī)的片內(nèi)RAM和特殊功能寄存器SFR共用一個(gè)地址空間,統(tǒng)一編址。

3.1.3 8051內(nèi)部數(shù)據(jù)存儲(chǔ)器——內(nèi)部RAM

8051內(nèi)部RAM有256個(gè)單元,通常在空間上分為兩個(gè)區(qū)域:低128個(gè)單元(00H~7FH)的內(nèi)部數(shù)據(jù)RAM塊和高128個(gè)單元(80H~0FFH)的專(zhuān)用寄存器SFR塊。

1.內(nèi)部RAM低128單元

8051低128個(gè)單元是真正的內(nèi)部數(shù)據(jù)RAM區(qū),是一個(gè)多功能復(fù)用型數(shù)據(jù)存儲(chǔ)器,其按用途可分為三個(gè)區(qū)域。如圖3.4所示。

1)工作寄存器區(qū)(00H~1FH)

也稱(chēng)為通用寄存器區(qū),該區(qū)域共有4組寄存器,每組由8個(gè)寄存單元組成,每個(gè)單元8位。各組均以R0~R7為寄存器編號(hào),共32個(gè)單元,單元地址為00H~1FH。

在任一時(shí)刻,CPU只能使用其中一組通用寄存器,稱(chēng)為當(dāng)前通用寄存器組,具體可由程序狀態(tài)寄存器PSW中RS1、RS0位的狀態(tài)組合來(lái)確定。通用寄存器為CPU提供了就近存取數(shù)據(jù)的便利,提高了工作速度,也為編程提供了方便。

圖3.4 8051內(nèi)部RAM低128單元配置

2)位尋址區(qū)(20H~2FH)

位尋址區(qū)是指CPU可以對(duì)其中的每一個(gè)二進(jìn)制位單獨(dú)進(jìn)行讀、寫(xiě)操作的區(qū)域。

位尋址區(qū)的地址為內(nèi)部RAM的20H~2FH,共16個(gè)單元,計(jì)16×8位=128位,而位地址為00H~7FH。位尋址區(qū)既可作為一般的RAM區(qū)進(jìn)行字節(jié)操作,也可對(duì)單元的每一位進(jìn)行位操作,因此稱(chēng)為位尋址區(qū),是存儲(chǔ)空間的一部分。例如,可以對(duì)位地址為“00H”的位存儲(chǔ)單元中寫(xiě)入“1”。如表3.1列出了內(nèi)部RAM位尋址區(qū)中每一位可訪問(wèn)二進(jìn)制位的位地址。

表3.1 位尋址區(qū)的位地址

其中:MSB——最高有效位;

   LSB——最低有效位。

3)用戶(hù)RAM區(qū)(30H~7FH)

所剩80個(gè)單元即為用戶(hù)RAM區(qū),單元地址為30H~7FH,在一般應(yīng)用中把堆棧設(shè)置在該區(qū)域中。

對(duì)內(nèi)部RAM低128單元的使用做幾點(diǎn)說(shuō)明:

(1)8051的內(nèi)部RAM 00H~7FH單元可采用直接尋址或間接尋址方式實(shí)現(xiàn)數(shù)據(jù)傳送。

(2)內(nèi)部RAM 20H~2FH單元的位地址空間可實(shí)現(xiàn)位操作。當(dāng)前工作寄存器組可通過(guò)軟件對(duì)PSW中的RS1、RS0位的狀態(tài)設(shè)置來(lái)選擇。

(3)8051的堆棧是自由堆棧,單片機(jī)復(fù)位后,堆棧底為07H,在程序運(yùn)行中可任意設(shè)置堆棧。堆棧設(shè)置通過(guò)對(duì)SP的操作實(shí)現(xiàn),例如用指令“MOV SP,#30H”將堆棧設(shè)置在內(nèi)部RAM 30H以上單元。

2.內(nèi)部RAM高128單元

內(nèi)部RAM高128單元是供給專(zhuān)用寄存器使用的,因此稱(chēng)之為專(zhuān)用寄存器區(qū),也稱(chēng)為特殊功能寄存器區(qū)(SFR區(qū)),單元地址為80H~0FFH。8051共有22個(gè)專(zhuān)用寄存器,其中程序計(jì)數(shù)器PC在物理上是獨(dú)立的,沒(méi)有地址,故不可尋址,它不屬于內(nèi)部RAM的SFR區(qū)。其余的21個(gè)專(zhuān)用寄存器都屬于內(nèi)部RAM的SFR區(qū),是可尋址的,它們的單元地址離散地分布于80H~0FFH。如表3.2所示為21個(gè)專(zhuān)用寄存器一覽表。

表3.2 8051專(zhuān)用寄存器一覽表

注:帶“·”專(zhuān)用寄存器表示可以進(jìn)行位操作。

1)程序計(jì)數(shù)器PC(Program Counter)

PC是一個(gè)16位計(jì)數(shù)器,其內(nèi)容為單片機(jī)將要執(zhí)行的指令機(jī)器碼所在存儲(chǔ)單元的地址。PC具有自動(dòng)加1的功能,從而實(shí)現(xiàn)程序的順序執(zhí)行。由于PC是不可尋址的,因此用戶(hù)無(wú)法對(duì)它直接進(jìn)行讀寫(xiě)操作,但可以通過(guò)轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以實(shí)現(xiàn)程序的轉(zhuǎn)移。PC的尋址范圍為64KB,即地址空間為0000H~0FFFFH。

以上關(guān)于程序計(jì)數(shù)器PC的敘述表明:

(1)PC中存放的內(nèi)容恒為16位地址信息;

(2)PC中存放的16位地址信息是單片機(jī)即將執(zhí)行的指令機(jī)器碼所在存儲(chǔ)區(qū)域的地址。

PC中的內(nèi)容在單片機(jī)指令執(zhí)行過(guò)程中具有自動(dòng)加1的功能(轉(zhuǎn)移類(lèi)指令除外),以使單片機(jī)連續(xù)執(zhí)行指令。當(dāng)需要改變指令的執(zhí)行順序時(shí),只要改變PC中的內(nèi)容即可。

2)累加器ACC(簡(jiǎn)寫(xiě)A)

累加器ACC是8位寄存器,是最常用的專(zhuān)用寄存器,功能強(qiáng)、地位重要。它既可存放操作數(shù),又可存放運(yùn)算的中間結(jié)果。MCS-51系列單片機(jī)中許多指令的操作數(shù)來(lái)自累加器ACC。累加器非常繁忙,是單片機(jī)的執(zhí)行程序瓶頸,制約了單片機(jī)工作效率的提高,現(xiàn)在已經(jīng)有些單片機(jī)用寄存器陣列來(lái)代替累加器ACC。

3)數(shù)據(jù)指針DPTR

數(shù)據(jù)指針DPTR為16位寄存器,它是MCS-51中唯一的一個(gè)16位寄存器。編程時(shí),既可按16位寄存器使用,也可作為兩個(gè)8位寄存器分開(kāi)使用。DPH為DPTR的高8位寄存器,DPL為DPTR的低8位寄存器。DPTR通常在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)作為地址指針使用,尋址范圍為64KB。

總結(jié)8051單片機(jī)內(nèi)部RAM單元分布如圖3.5所示。

圖3.5 8051單片機(jī)內(nèi)部RAM單元分布圖

3.1.4 8051內(nèi)部程序存儲(chǔ)器——內(nèi)部ROM

大多數(shù)51系列單片機(jī)內(nèi)部都配置一定數(shù)量的程序存儲(chǔ)器ROM,如圖3.6所示。如8051芯片內(nèi)有4KB掩膜ROM存儲(chǔ)單元,AT89C51芯片內(nèi)部配置了4KB Flash ROM,它們的地址范圍均為0000H~0FFFH。內(nèi)部程序存儲(chǔ)器有一些特殊單元,使用時(shí)要注意。

ROM中一組特殊單元是0000H~0002H。單片機(jī)通電或復(fù)位后,(PC)=0000H,這樣單片機(jī)就從0000H單元開(kāi)始執(zhí)行指令。如果此時(shí)單片機(jī)的應(yīng)用程序存放在其他區(qū)域,就要在這三個(gè)單元中存放一條無(wú)條件轉(zhuǎn)移指令,以便轉(zhuǎn)去執(zhí)行指定區(qū)域的應(yīng)用程序。

另外,在程序存儲(chǔ)器中專(zhuān)門(mén)開(kāi)辟了各個(gè)中斷源的入口向量地址區(qū)域,以便為中斷技術(shù)服務(wù)(中斷的概念以后講述),分配如下。

0003H~000AH:外部中斷0中斷地址區(qū)。

000BH~0012H:定時(shí)器/計(jì)數(shù)器0中斷地址區(qū)。

0013H~001AH:外部中斷1中斷地址區(qū)。

001BH~0022H:定時(shí)器/計(jì)數(shù)器1中斷地址區(qū)。

0023H~002AH:串行中斷地址區(qū)。

中斷地址區(qū)首地址為各個(gè)中斷源的入口向量地址,每個(gè)中斷地址區(qū)有8個(gè)地址單元。在中斷地址區(qū)中應(yīng)存放中斷服務(wù)程序,但8個(gè)單元通常難以存下一個(gè)完整的中斷服務(wù)程序,因此往往需要在中斷地址區(qū)首地址中存放一條無(wú)條件轉(zhuǎn)移指令,轉(zhuǎn)去中斷服務(wù)程序真正的入口地址。

從002BH開(kāi)始的單元才是用戶(hù)可以隨意使用的程序存儲(chǔ)器。

對(duì)程序存儲(chǔ)器的操作做以下說(shuō)明:

(1)程序指令的自主操作。CPU按照PC指針自動(dòng)地從程序存儲(chǔ)器中取出指令。

(2)用戶(hù)使用指令對(duì)程序存儲(chǔ)器中的常數(shù)表格進(jìn)行讀操作,可用MOVC指令實(shí)現(xiàn)。

圖3.6 8051單片機(jī)內(nèi)部ROM單元分布圖

主站蜘蛛池模板: 远安县| 遂川县| 新平| 衡山县| 曲松县| 内丘县| 新竹市| 阳高县| 泊头市| 简阳市| 略阳县| 台北县| 彭水| 定西市| 赣州市| 新绛县| 甘德县| 策勒县| 东港市| 西吉县| 涪陵区| 波密县| 红桥区| 姚安县| 大关县| 徐闻县| 景宁| 宕昌县| 九寨沟县| 通海县| 金乡县| 四平市| 彝良县| 富锦市| 渝北区| 卢氏县| 车致| 乐昌市| 朝阳县| 咸阳市| 清原|