加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

51單片機(jī)的存儲(chǔ)空間梳理

2021/04/23
1611
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

我們?cè)趯W(xué)習(xí)傳統(tǒng)的MCS-51單片機(jī)的時(shí)候,一定學(xué)習(xí)過51單片機(jī)的存儲(chǔ)結(jié)構(gòu)。傳統(tǒng)的MCS-51存儲(chǔ)器有三個(gè)空間,分別是片內(nèi)RAM(內(nèi)部數(shù)據(jù)存儲(chǔ)器)、片外RAM(外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器) 和 ROM(內(nèi)部或者外部程序存儲(chǔ)器)。按照具體數(shù)據(jù)的物理存儲(chǔ)空間來說,MCS-51單片機(jī)在有四個(gè)物理存儲(chǔ)空間,它們分別是:片內(nèi)程序存儲(chǔ)器(片內(nèi)ROM)、片外程序存儲(chǔ)器(片外ROM)、片內(nèi)數(shù)據(jù)存儲(chǔ)器(片內(nèi)RAM)、片外數(shù)據(jù)存儲(chǔ)器(片外RAM)。

1、片內(nèi)RAM空間上述的這四種物理存儲(chǔ)空間中,最早的8031單片機(jī),只有數(shù)據(jù)存儲(chǔ)器即內(nèi)部RAM是標(biāo)配的,其他都需要外擴(kuò),而到來的8051兼容機(jī)中,內(nèi)部的數(shù)據(jù)存儲(chǔ)器(RAM)和內(nèi)部的程序存儲(chǔ)器(ROM)都成了標(biāo)配。只不過更加不同型號(hào),RAM和ROM的大小有些許區(qū)別。那么,在那個(gè)存儲(chǔ)器貴如金的年代,為何還要將RAM作為標(biāo)配?而且這個(gè)還是價(jià)格非常昂貴的靜態(tài)RAM。這是因?yàn)?,哈佛結(jié)構(gòu)的計(jì)算機(jī),存儲(chǔ)器是整個(gè)計(jì)算體系的核心,你可以發(fā)現(xiàn),51單片機(jī)外設(shè)相關(guān)的存儲(chǔ)器,它們都被編入數(shù)據(jù)存儲(chǔ)器(RAM)的地址。如圖1所示。

圖1 MCS-51單片機(jī)內(nèi)部256字節(jié)RAM存儲(chǔ)分布

由圖1中,我們可以發(fā)現(xiàn),MCS-51單片機(jī)的地址范圍是00H到7FH (52系列延伸到FFH),為8位地址,所以最大可尋址的范圍為256個(gè)單元地址。這些地址被分成4個(gè)功能區(qū):

地址00H~1FH,共32字節(jié),分成四個(gè)工作寄存器區(qū),每區(qū)有寄存器 R0~R7。此存儲(chǔ)區(qū)如果需要使用寄存器進(jìn)行數(shù)據(jù)的存儲(chǔ),則可以直接使用寄存器尋址。如“MOV A,R0”。

地址20H-2FH,共16字節(jié),是位尋址區(qū),共有128個(gè)“位”,位地址:00~7FH。此區(qū)域的變量,也可按照字節(jié)尋址,來讀寫。如,我們將20H地址的第0位(0或者1)移入程序狀態(tài)字(PSW)的進(jìn)位標(biāo)志位(C),則可以:“MOV C, 20H.0”。

地址30H-7FH,這個(gè)區(qū)域內(nèi)的內(nèi)存空間,主要是存放用戶編寫程序時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù),這塊區(qū)域內(nèi)的尋址方式都為間接尋址,而且只能按照字節(jié)單位進(jìn)行尋址。如果使用C語言要訪問內(nèi)部存儲(chǔ)區(qū),那么你所定義的指針只能指向這一片地址。

地址80H-FFH,此區(qū)域?yàn)?a class="article-link" target="_blank" href="/baike/521825.html">特殊功能寄存器區(qū)(SFR),共有128個(gè)地址,其中離散的分布著21個(gè)特殊功能寄存器,必須直接尋址才能讀寫。另外,部分地址可以被8整除的特殊功能寄存器,也可以支持位尋址。(52系列,在此范圍,還有128字節(jié)的 RAM,必須間接尋址才能讀寫)。

注意,在51單片機(jī)的內(nèi)部RAM中進(jìn)行編程的時(shí)候,必須使用MOV指令進(jìn)片內(nèi)RAM的讀寫。

 2、外部RAM擴(kuò)展除了內(nèi)部RAM的這些存儲(chǔ)空間,MCS-51單片機(jī)也支持外部RAM的擴(kuò)展。普通51單片機(jī)最大可以片外擴(kuò)展64K字節(jié)空間的RAM,其地址范圍為0000H~FFFFFH,我們可以使用標(biāo)準(zhǔn)MCS-51單片機(jī)的P0口和P2口對(duì)RAM進(jìn)行擴(kuò)展。其擴(kuò)展電路如圖2所示。

圖2 外部RAM擴(kuò)展

片外RAM地址的最大范圍是0000H到FFFFH,即最大容量為64KB。對(duì)片外RAM讀寫,必須使用 MOVX 指令。對(duì)片外RAM采用間接尋址方式,R0、R1和DPTR都可以做為間接尋址寄存器,R0、R1是8位的寄存器,即R0、R1的尋址范圍最大為256個(gè)單元,而DPTR是16位地址指針,尋址范圍就可達(dá)到64KB。也就是說在尋址片外RAM時(shí),尋址范圍超過了256B,就不能用R0、R1做為間接尋址寄存器,而必須用DPTR寄存器做為間接尋址寄存器。

3、片外ROM擴(kuò)展除了RAM可以擴(kuò)展之外,51單片機(jī)還支持外部程序存儲(chǔ)器的擴(kuò)展,此時(shí)做外ROM擴(kuò)展的時(shí)候,需要使用到PSEN引腳去做芯片的選通。PSEN(非)為外部程序存儲(chǔ)器讀選通信號(hào),在讀外部ROM時(shí)PSEN(非)低電平有效,以實(shí)現(xiàn)外部ROM單元的讀操作,全拼為Program Store Enable。外部ROM的擴(kuò)展電路如圖3所示。

圖3 MCS-51單片機(jī)外部ROM擴(kuò)展

ROM的地址范圍是0000H到FFFFH,容量即為64KB,地址長度16位,作用是 存放程序及程序運(yùn)行時(shí)所需的常數(shù)。其中4K地址(0000~0FFFH)的空間保留在了在片內(nèi),剩余的其它地址被用作片外ROM的地址,因此如果要擴(kuò)展片外ROM,則其地址范圍最大為(0x1000~0xffff)。當(dāng)引腳EA為高電平時(shí),則尋址內(nèi)部ROM,當(dāng)EA為低電平時(shí),則尋址外部ROM。如果單片機(jī)想要讀取ROM中的數(shù)據(jù),必須使用 MOVC 指令。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜