8051單片機的儲存空間結構

來源:互聯網
上載者:User

MCS-51單片機在物理結構上有四個儲存空間:

1、片內程式儲存空間
2、片外程式儲存空間
3、片內資料存放區器
4、片外資料存放區器

但在邏輯上,即從使用者的角度上,8051單片機有三個儲存空間:

1、片內外統一編址的64K的程式儲存空間地址空間(MOVC)
2、256B的片內資料存放區器的地址空間(MOV)
3、以及64K片外資料存放區器的地址空間(MOVX)
在訪問三個不同的邏輯空間時,應採用不同形式的指令(具體我們在後面的指令系統學習時將會講解),以產生不同的儲存空間空間的選通訊號。

程式記憶體ROM

定址範圍:0000H ~ FFFFH 容量64KB
EA = 1,定址內部ROM;EA = 0,定址外部ROM
地址長度:16位
作用: 存放程式及程式運行時所需的常數。
七個具有特殊含義的單元是:
0000H —— 系統複位,PC指向此處;
0003H —— 外部中斷0入口
000BH —— T0溢出中斷入口
0013H —— 外中斷1入口
001BH —— T1溢出中斷入口
0023H —— 串口中斷入口
002BH —— T2溢出中斷入口

內部資料存放區器RAM
      物理上分為兩大區:00H ~ 7FH即128B內RAM 和 SFR區。
作用:作資料緩衝器用。

是8051單片機儲存空間的空間結構圖

程式儲存空間

    一個微處理器能夠聰明地執行某種任務,除了它們強大的硬體外,還需要它們啟動並執行軟體,其實微處理器並不聰明,它們只是完全按照人們預先編寫的程式而執行之。那麼設計人員編寫的程式就存放在微處理器的程式儲存空間中,俗稱唯讀程式儲存空間(ROM)。程式相當於給微處理器處理問題的一系列命令。其實程式和資料一樣,都是由機器碼組成的代碼串。只是程式碼則存放於程式儲存空間中。
   MCS-51具有64kB程式儲存空間定址空間,它是用於存放使用者程式、資料和表格等資訊。對於內部無ROM的8031單片機,它的程式儲存空間必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程式儲存空間讀取程式。對於內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程式儲存中讀取程式,當PC值超過內部ROM的容量時,才會轉向外部的程式儲存空間讀取程式。
    當=1時,程式從片內ROM開始執行,當PC值超過片內ROM容量時會自動轉向外部ROM空間。
    當=0時,程式從外部儲存空間開始執行,例如前面提到的片內無ROM的8031單片機,在實際應用中就要把8031的引腳接為低電平。
    8051片內有4kB的程式儲存單元,其地址為0000H—0FFFH,單片機啟動複位後,程式計數器的內容為0000H,所以系統將從0000H單元開始執行程式。但在程式儲存中有些特殊的單元,這在使用中應加以注意:
    其中一組特殊是0000H—0002H單元,系統複位後,PC為0000H,單片機從0000H單元開始執行程式,如果程式不是從0000H單元開始,則應在這三個單元中存放一條無條件轉移指令,讓CPU直接去執行使用者指定的程式。
    另一組特殊單元是0003H—002AH,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:
     0003H—000AH  外部中斷0中斷地址區。
     000BH—0012H  定時/計數器0中斷地址區。
     0013H—001AH  外部中斷1中斷地址區。
     001BH—0022H  定時/計數器1中斷地址區。
     0023H—002AH  串列中斷地址區。
    可見以上的40個單元是專門用於存放中斷處理常式的地址單元,中斷響應後,按中斷的類型,自動轉到各自的中斷區去執行程式。從上面可以看出,每個中斷服務程式只有8個位元組單元,用8個位元組來存放一個中斷服務程式顯然是不可能的。因此以上地址單元不能用於存放程式的其他內容,只能存放中斷服務程式。但是通常情況下,我們是在中斷響應的地址區安放一條無條件轉移指令,指向程式儲存空間的其它真正存放中斷服務程式的空間去執行,這樣中斷響應後,CPU讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程式。

是ROM的地址分配圖:

    從中大家可以看到,0000H-0002H,只有三個儲存單元,3個儲存單元在我們的程式存放時是存放不了實際意義的程式的,通常我們在實際編寫程式時是在這裡安排一條ORG指令,通過ORG指令跳轉到從0033H開始的使用者ROM地區,再來安排我們的程式語言。從0033開始的使用者ROM地區使用者可以通過ORG指令任意安排,但在應用中應注意,不要超過了實際的儲存空間,不然程式就會找不到。

資料存放區器

    資料存放區器也稱為隨機存取資料存放區器。資料存放區器分為內部資料存放區和外部資料儲存。MCS-51內部RAM有128或256個位元組的使用者資料存放區(不同的型號有分別),片外最多可擴充64KB的RAM,構成兩個地址空間,訪問片內RAM用“MOV”指令,訪問片外RAM用“MOVX”指令。它們是用於存放執行的中間結果和過程資料的。MCS-51的資料存放區器均可讀寫,部分單元還可以位定址。
    MCS-51單片機的內部資料存放區器在物理上和邏輯上都分為兩個地址空間,即:
資料存放區器空間(低128單元);
特殊功能寄存器空間(高128單元);
這兩個空間是相連的,從使用者角度而言,低128單元才是真正的資料存放區器。下面我們就來詳細的與大家講解一下:

低128單元:
    片內資料存放區器為8位地址,所以最大可定址的範圍為256個單元地址,對片外資料存放區器採用間接定址方式,R0、R1和DPTR都可以做為間接定址寄存器,R0、R1是8位的寄存器,即R0、R1的定址範圍最大為256個單元,而DPTR是16位地址指標,定址範圍就可達到64KB。也就是說在定址片外資料存放區器時,定址範圍超過了256B,就不能用R0、R1做為間接定址寄存器,而必須用DPTR寄存器做為間接定址寄存器。

從中我們可以看到,8051單片機片內RAM共有256個單元(00H-FFH),這256個單元共分為兩部分。其一是地址從00H—7FH單元(共128個位元組)為使用者資料RAM。從80H—FFH地址單元(也是128個位元組)為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。

1、通用寄存器區(00H-1FH)
    在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那麼在程式中怎麼區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程式狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的D3和D4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關係如下表所示。惹程式中並不需要用4組,那麼其餘的可用做一般的資料緩衝器,CPU在複位後,選中第0組工作寄存器。

組

RS1  RS0

R0

R1

R2

R3

R4

R5

R6

R7

0

1

2

3

0     0

0     1

1     0

1     1

00H

08H

10H

18H

01H

09H

11H

19H

02H

0AH

12H

1AH

03H

0BH

13H

1BH

04H

0CH

14H

1CH

05H

0DH

15H

1DH

06H

0EH

16H

1EH

07H

0FH

17H

1FH

2、位定址區(20H-2FH)
片內RAM的20H—2FH單元為位定址區,既可作為一般單元用位元組定址,也可對它們的位進行定址。位定址區共有16個位元組,128個位,位地址為00H—7FH。位地址分配如下表所示:

RAM位定址區地址表

單元地址

MSB        位地址        LSB

 

2FH

7FH

7EH

7DH

7CH

7BH

7AH

79H

78H

 

2EH

77H

76H

75H

74H

73H

72H

71H

70H

 

2DH

6FH

6EH

6DH

6CH

6BH

6AH

69H

68H

 

2CH

67H

66H

65H

64H

63H

62H

61H

60H

 

2BH

5FH

5EH

5DH

5CH

5BH

5AH

59H

58H

 

2AH

57H

56H

55H

54H

53H

52H

51H

50H

 

29H

4FH

4EH

4DH

4CH

4BH

4AH

49H

48H

 

28H

47H

46H

45H

44H

43H

42H

41H

40H

 

27H

3FH

3EH

3DH

3CH

3BH

3AH

39H

38H

 

26H

37H

36H

35H

34H

33H

32H

31H

30H

 

25H

2FH

2EH

2DH

2CH

2BH

2AH

29H

28H

 

24H

27H

26H

25H

24H

23H

22H

21H

20H

 

23H

1FH

1EH

1DH

1CH

1BH

1AH

19H

18H

 

22H

17H

16H

15H

14H

13H

12H

11H

10H

 

21H

0FH

0EH

0DH

0CH

0BH

0AH

09H

08

H

 

20H

07H

06H

05H

04H

03H

02H

01H

00H

 

CPU能直接定址這些位,執行例如置“1”、清“0”、求“反”、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的儲存空間指的就是這些為定址區。

3、使用者RAM區(30H-7FH)
在片內RAM低128單元中,通用寄存器佔去32個單元,位定址區佔去16個單元,剩下的80個單元就是供使用者使用的一般RAM區了,地址單元為30H-7FH。對這部份地區的使用不作任何規定和限制,但應說明的是,堆棧一般開闢在這個地區。

高128單元:(80H-FFH)
前面提到,在片內的RAM中,高128位是專用寄存器區,因這節比較重要,所以我們單獨的安排一節課跟大家介紹。下節課我們就重點介紹51單片機片內RAM的高128位,即專用寄存器區

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.