• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

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

2024/04/23
2.7萬
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

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

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

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

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

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

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

地址80H-FFH,此區(qū)域為特殊功能寄存器區(qū)(SFR),共有128個地址,其中離散的分布著21個特殊功能寄存器,必須直接尋址才能讀寫。另外,部分地址可以被8整除的特殊功能寄存器,也可以支持位尋址。(52系列,在此范圍,還有128字節(jié)的 RAM,必須間接尋址才能讀寫)。

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

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

圖2 外部RAM擴(kuò)展

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

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

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

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

相關(guān)推薦