51單片機(jī)——存儲(chǔ)器(一)
1.存儲(chǔ)器概述
? ? ? ?存儲(chǔ)器是許多存儲(chǔ)單元的集合,存儲(chǔ)器單元實(shí)際上是時(shí)序邏輯電路(鎖存器)的一種,按單元號(hào)順序排列。每個(gè)單元由若干二進(jìn)制位構(gòu)成,以表示存儲(chǔ)單元中存放的數(shù)值,這種結(jié)構(gòu)和數(shù)組的結(jié)構(gòu)非常相似。按存儲(chǔ)器的使用類(lèi)型可分為只讀存儲(chǔ)器(ROM)和隨機(jī)存取存儲(chǔ)器(RAM)。
1.1存儲(chǔ)單位
位(bit):它是計(jì)算機(jī)中最小的數(shù)據(jù)單位。由于計(jì)算機(jī)采用二進(jìn)制數(shù),所以1位二進(jìn)制數(shù)稱(chēng)作1bit,例如101011為6bit。
字節(jié)(Byte,單位簡(jiǎn)寫(xiě)為B):8位二進(jìn)制數(shù)稱(chēng)為一個(gè)字節(jié),1B=8bit。
字(Word):兩個(gè)字節(jié)構(gòu)成一個(gè)字,即2Byte=1Word。
在單片機(jī)中還有一個(gè)常用術(shù)語(yǔ):字長(zhǎng)。所謂字長(zhǎng)是指單片機(jī)一次能處理的二進(jìn)制數(shù)的位數(shù)。51單片機(jī)一次能處理8位二進(jìn)制數(shù),所以51單片機(jī)的字長(zhǎng)為8位。
1.2存儲(chǔ)器編址
如下圖所示是一個(gè)容量為256字節(jié)的存儲(chǔ)器,內(nèi)部有256個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元可以存放8位二進(jìn)制數(shù),為了存取數(shù)據(jù)方便,需要對(duì)每個(gè)存儲(chǔ)單元進(jìn)行編號(hào),也即對(duì)存儲(chǔ)單元編址,編址采用二進(jìn)制數(shù),對(duì)256個(gè)存儲(chǔ)單元全部編址至少要用到8位二進(jìn)制數(shù),第1個(gè)存儲(chǔ)單元編址為00000000,編寫(xiě)程序時(shí)為了方便,一般用十六進(jìn)制數(shù)表示,二進(jìn)制數(shù)00000000用十六進(jìn)制表示就是00H,H表示十六制數(shù),第二個(gè)存儲(chǔ)單元編址為01H,第256個(gè)存儲(chǔ)單元編址為FFH(也可以寫(xiě)成0FFH)。

1.3存儲(chǔ)器數(shù)據(jù)讀寫(xiě)說(shuō)明
要對(duì)256字節(jié)存儲(chǔ)器的每個(gè)存儲(chǔ)單元進(jìn)行讀寫(xiě),需要8根地址線(xiàn)和8根數(shù)據(jù)線(xiàn),先送8位地址選中某個(gè)存儲(chǔ)單元,再根據(jù)讀控制或?qū)懣刂疲瑢⑦x中的存儲(chǔ)單元的8位數(shù)據(jù)從8根數(shù)據(jù)線(xiàn)送出,或通過(guò)8根數(shù)據(jù)線(xiàn)將8位數(shù)據(jù)存入選中的存儲(chǔ)單元中。以圖1 存儲(chǔ)器結(jié)構(gòu)為例,當(dāng)?shù)刂房偩€(xiàn)A7~A0將8位地址00011111(1FH)送入存儲(chǔ)器時(shí),會(huì)選中內(nèi)部編址為1FH的存儲(chǔ)單元,這時(shí)再?gòu)淖x控制線(xiàn)送入一個(gè)讀控制信號(hào),1FH 存儲(chǔ)單元中的數(shù)據(jù)00010111從8根數(shù)據(jù)總線(xiàn)D7~D0送出。
1.4 存儲(chǔ)器的地址空間說(shuō)明
MCS-51單片機(jī)采用哈佛結(jié)構(gòu),即程序空間(ROM)和數(shù)據(jù)空間(RAM)分開(kāi)編址,它們有各自的地址空間,互不重疊,因此ROM和RAM可以有相同的地址編碼。為區(qū)分同一地址的變量是來(lái)自ROM還是RAM,要求編程時(shí)定義的任何變量都必須以一定的存儲(chǔ)器類(lèi)型的方式定位在MCS-51單片機(jī)的某一存儲(chǔ)區(qū)中。使用C51編程時(shí),只需用關(guān)鍵字就可定義變量的存儲(chǔ)器類(lèi)型。C51變量的存儲(chǔ)器類(lèi)型見(jiàn)下表所示。

從物理地址空間看,MCS-51單片機(jī)的存儲(chǔ)器有4個(gè)地址空間,分別是4KB的片內(nèi)ROM、64KB的片外ROM、256B的片內(nèi)RAM、64KB的片外RAM。
2.ROM(程序存儲(chǔ)器)
ROM(程序存儲(chǔ)器)存放程序、表格和始終要保留的常數(shù),相當(dāng)于計(jì)算機(jī)系統(tǒng)的硬盤(pán);
2.1 片內(nèi)外ROM(程序存儲(chǔ)器)
? ? ? ? 8051單片機(jī)內(nèi)部有4KB的程序存儲(chǔ)器,如果內(nèi)部程序存儲(chǔ)器不夠用(或無(wú)內(nèi)部程序存儲(chǔ)器),可以外接程序存儲(chǔ)器。8051單片機(jī)最大可以外接容量為64KB的程序存儲(chǔ)器(ROM),它與片內(nèi)4KB程序存儲(chǔ)器統(tǒng)一編址。?
? ? ? ? 當(dāng)單片機(jī)的

端接高電平(接電源正極)時(shí),片內(nèi)、片外程序存儲(chǔ)器都可以使用,片內(nèi)4KB 程序存儲(chǔ)器的編址為0000H~0FFFH,片外64KB 程序存儲(chǔ)器的編址為1000H~FFFFH,片外程序存儲(chǔ)器低4KB存儲(chǔ)空間無(wú)法使用,如下圖所示。

?當(dāng)單片機(jī)的

端接低電平(接地)時(shí),只能使用片外程序存儲(chǔ)器,其編址為0000H~FFFFH,片內(nèi)4KB程序存儲(chǔ)器無(wú)法使用,如下圖所示。?

2.2 片內(nèi)外ROM(程序存儲(chǔ)器)說(shuō)明
(1)無(wú)論是使用片內(nèi)ROM還是使用片外ROM,程序的起始地址都是從ROM的0000H單元開(kāi)始的。
(2)盡管單片機(jī)可以同時(shí)具備內(nèi)、外ROM,但是在一般情況下,都需要通過(guò)

的設(shè)定來(lái)選擇其一。?
(3)如果

=1,當(dāng)程序超過(guò)片內(nèi)ROM容量(4KB:0000H~0FFFH)時(shí),單片機(jī)就會(huì)自動(dòng)轉(zhuǎn)向片外ROM,并且從1000H單元開(kāi)始執(zhí)行程序(無(wú)法使用片外ROM的低4KB空間)。目前,一般單片機(jī)的片內(nèi)ROM容量都?jí)?,因此,很少或沒(méi)必要擴(kuò)展片外ROM。
? ? ? ? ROM空間一般可以根據(jù)用戶(hù)需要任意安排使用,但ROM中的某些地址被中斷程序的入口地址占用,具體如下表所示。


版權(quán)聲明:本文為CSDN博主「胡豆24」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。
原文鏈接:https://blog.csdn.net/qq_37324376/article/details/119968934