複製鏈接
請複製以下鏈接發送給好友

單片機存儲器

鎖定
存儲器是單片機的又一個重要組成部分,存儲容量為256個單元的存儲器結構中每個存儲單元對應一個地址,256個單元共有256個地址,用兩位16進制數表示,即存儲器的地址(00H~FFH)。存儲器中每個存儲單元可存放一個八位二進制信息,通常用兩位16進制數來表示,這就是存儲器的內容。存儲器的存儲單元地址和存儲單元的內容是不同的兩個概念,不能混淆。
中文名
單片機存儲器
外文名
Microcontrollers memory
類    別
電路芯片
用    途
存儲信息

單片機存儲器程序存儲器

單片機存儲器程序存儲器概念

程序存儲器是用於存放程序代碼的,是控制計算機動作的一系列命令,單片機只認識由“0”和“1”代碼構成的機器指令。如前述用助記符編寫的命令MOV A,#20H,換成機器認識的代碼74H、20H:(寫成二進制就是01110100B和00100000B)。在單片機處理問題之前必須事先將編好的程序、表格、常數彙編成機器代碼後存入單片機的存儲器中,該存儲器稱為程序存儲器

單片機存儲器介紹

程序存儲器可以放在片內或片外,亦可片內片外同時設置。由於PC程序計數器為16位,使得程序存儲器可用16位二進制地址,因此,內外存儲器的地址最大可從0000H到FFFFH。8051內部有4k字節的ROM,就佔用了由0000H~0FFFH的最低4k個字節,這時片外擴充的程序存儲器地址編號應由1000H開始,如果將8051當做8031使用,不想利用片內4kROM,全用片外存儲器,則地址編號仍可由0000H開始。不過,這時應使8051的第{31}腳(即EA腳)保持低電平。當EA為高電平時,用户在0000H至0FFFH範圍內使用內部ROM,大於0FFFH後,單片機CPU自動訪問外部程序存儲器。

單片機存儲器數據存儲器

單片機存儲器組成

單片機的數據存儲器由讀寫存儲器RAM組成。

單片機存儲器介紹

其最大容量可擴展到64k,用於存儲實時輸入的數據。8051內部有256個單元的內部數據存儲器,其中00H~7FH為內部隨機存儲器RAM,80H~FFH為專用寄存器區。實際使用時應首先充分利用內部存儲器,從使用角度講,搞清內部數據存儲器的結構和地址分配是十分重要的。因為將來在學習指令系統和程序設計時會經常用到它們。8051內部數據存儲器地址由00H至FFH共有256個字節的地址空間,該空間被分為兩部分,其中內部數據RAM的地址為00H~7FH(即0~127)。而用做特殊功能寄存器的地址為80H~FFH。在此256個字節中,還開闢有一個所謂“位地址”區,該區域內不但可按字節尋址,還可按“位(bit)”尋址。對於那些需要進行位操作的數據,可以存放到這個區域。從00H到1FH安排了四組工作寄存器,每組佔用8個RAM字節,記為R0~R7。究竟選用那一組寄存器,由前述標誌寄存器中的RS1和RS0來選用。在這兩位上放入不同的二進制數,即可選用不同的寄存器組

單片機存儲器特殊功能寄存器

單片機存儲器介紹

特殊功能寄存器(SFR)的地址範圍為80H~FFH。在MCS-51中,除程序計數器PC和四個工作寄存器區外,其餘21個特殊功能寄存器都在這SFR塊中。其中5個是雙字節寄存器,它們共佔用了26個字節。各特殊功能寄存器的符號和地址見附表。其中帶*號的可位尋址特殊功能寄存器反映了8051的狀態,實際上是8051的狀態字及控制字寄存器。用於CPU PSW便是典型一例。

單片機存儲器分類

這些特殊功能寄存器大體上分為兩類,一類與芯片的引腳有關,另一類作片內功能的控制用。與芯片引腳有關的特殊功能寄存器是P0~P3,它們實際上是4個八位鎖存器(每個I/O口一個),每個鎖存器附加有相應的輸出驅動器和輸入緩衝器就構成了一個並行口。MCS-51共有P0~P3四個這樣的並行口,可提供32根I/O線,每根線都是雙向的,並且大都有第二功能。其餘用於芯片控制的寄存器中,累加器A、標誌寄存器PSW、數據指針DPTR等的功能前已提及,而另一些寄存器的功能在後面有關部分再作進一步介紹。

單片機存儲器MCS-51單片機存儲器結構詳解

MCS-51存儲器基本結構圖 MCS-51存儲器基本結構圖
MCS-51單片機存儲器採用哈佛結構(har-vard),在物理結構上分為程序存儲器空間和數據存儲器空間,細分為:片內、片外程序存儲器和片內、片外數據存儲器從圖中可看出,這4個存儲空間存在地址衝突問題:數據存儲器與程序存儲器的64KB地址空間重疊;程序存儲器中片內與片外的低4KB地址重疊;數據存儲器中片內與片外最低的256B(8031僅有低128B)地址重疊。在程序存儲器中,片內地址0000日一OOZA日的存儲空間,留給系統使用。片內數據存儲器共256B地址空間,分為低128B和高128B。低128B又分為工作寄存器區、位尋址區和用户RAM區;高128B又叫特殊功能寄存器,這些寄存器的功能具有專門的規定,用户不能修改其結構。存儲器中共有11個可位尋址的位地址。其中,片內數據存儲器中有128個;特殊功能寄存器中有83個 [1] 

單片機存儲器MCS-51程序存儲器

MCS-51中,程序存儲器通過16位程序計數器(PC)尋址,具有64KB尋址能力,也即可以在64KB的地址空間任意尋址。其中,具有4KB片內程序存儲器空間,地址為000H-0FFFH(注:8031無片內程序存儲器);片外程序存儲器空間最大可擴展到64KB,地址為0000H-FFFFH,片內、外統一編址。
1、程序存儲器片內與片外地址
由於片內、外統一編址,所以片內4KB存儲空間地址000H-0FFFH與片外存儲器地址000H-0FFFH發生衝突。但是,CPU是訪問片內存儲器還是訪問片外存儲器,可由引腳上所接的電平來確定。
1)當EA引腳接高電平時,若程序計數器(PC)值超出片內存儲空間,則自動轉向片外程序存儲器空間執行程序;
2)當EA引腳接低電平時,單片機只能執行片外程序存儲器的程序。
另外,因為8031沒有片內程序存儲器,所以就將EA引腳固定接低電平,通過外部擴展程序存儲器來存放程序;而對其它MCS-51,若沒有片外程序存儲器,那應將引腳固定接高電平。通過EA引腳所接電平不同,解決了程序存儲器中片內、片外地址衝突問題。
2、程序存儲器中的特殊單元
MCS-51程序存儲器中,有6個存儲單元具有特殊用途。
0000H單元為系統啓動地址。MCS-51單片機啓動復位後,程序計數器(PC)的內容為0000H,所以系統將從0000H單元取指令,並開始執行程序。程序設計時一般在該地址存放一條絕對跳轉指令,轉入主程序的入口地址。
另外0003H一002AH日被均勻地分成5段,用於5箇中斷服務程序的入口。
其中0003H、000BH、0013H、O01BH、0023H為5箇中斷源的中斷服務程序的入口地址。
中斷源的中斷服務程序的入口地址,即當中斷產生相應的中斷服務程序的起始地址被裝入程序計數器(PC),系統將從該地址取指令,並執行程序 [1] 

單片機存儲器MCS-51數據存儲器

8051有256個單元的內片數據存儲器,其中00H-7FH為片內隨機存儲器RAM,也叫低128B;80H-FFH為特殊功能寄存器,也叫高128B。低128B又分為工作寄存器區、位尋址區、用户RAM區。
1.工作寄存器區(00H-1FH)
在00H-1FH共32個單元,被均勻地分為四組工作寄存器堆:RB0、RB1、RB2、RB3,每組寄存器堆包含8個工作寄存器,均以R0-R7來命名,這些寄存器被稱為通用寄存器。工作寄存器用於臨時存放8位信息。在使用時,由程序狀態字寄存器中的RS0、RS1來選擇工作寄存器堆。
2.位尋址區(20H-2FH)
片內數據存儲器的20H-2FH存儲區為位尋址區,既可作為一般單元按字節尋址,也可按位進行尋址。位尋址區有16個字節,位地址為00H-7FH。
3.用户RAM區(30H-7FH)
用户RAM區主要用作數據緩衝區和堆棧。這個存儲區只能按字節尋址,用作存放數據及作為堆棧區。通常堆棧區被設置在這塊存儲區,由堆棧寄存器SP指定,CPU復位時SP=07H,使得堆棧實際上是從08H開始的,但08H-1FH屬於工作寄存器區 [1] 

單片機存儲器附表

MCS-51單片機的特殊功能寄存器
符號
地址
功能介紹
F0H
B寄存器
E0H
累加器
D0H
程序狀態字
TH2*
CDH
定時器/計數器2(高8位)
TL2*
CCH
定時器/計數器2(低8位)
RLDH*
CBH
外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器高八位
RLDL*
CAH
外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器低八位
T2CON*
C8H
T2定時器/計數器控制寄存器
B8H
中斷優先級控制寄存器
B0H
P3口鎖存器
A8H
中斷允許控制寄存器
A0H
P2口鎖存器
SBUF
99H
串行口鎖存器
98H
串行口控制寄存器
P1
90H
P1口鎖存器
TH1
8DH
定時器/計數器1(高8位)
TH0
8CH
定時器/計數器0(高8位)
TL1
8BH
定時器/計數器1(低8位)
TL0
8AH
定時器/計數器0(低8位)
89H
T0、T1定時器/計數器方式控制寄存器
88H
T0、T1定時器/計數器控制寄存器
DPH
83H
數據地址指針(高8位)
DPL
82H
數據地址指針(低8位)
SP
81H
堆棧指針
P0
80H
P0口鎖存器
PCON
87H
電源控制寄存器
參考資料