單片機存儲器

單片機存儲器

存儲器是單片機的又一個重要組成部分,圖6給出了一種存儲容量為256個單元的存儲器結構示意圖。其中每個存儲單元對應一個地址,256個單元共有256個地址,用兩位16進制數表示,即存儲器的地址(00H~FFH)。存儲器中每個存儲單元可存放一個八位二進制信息,通常用兩位16進制數來表示,這就是存儲器的內容。存儲器的存儲單元地址和存儲單元的內容是不同的兩個概念,不能混淆。

基本介紹

程式存儲器,程式存儲器概念,介紹,數據存儲器,組成,介紹,特殊功能暫存器,介紹,分類,MCS-51單片機存儲器結構詳解,MCS-51程式存儲器,MCS-51數據存儲器,附表,

程式存儲器

程式存儲器概念

程式存儲器是用於存放程式代碼的,是控制計算機動作的一系列命令,單片機只認識由“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單片機存儲器採用哈佛結構(har-vard),在物理結構上分為程式存儲器空間和數據存儲器空間,細分為:片內、片外程式存儲器和片內、片外數據存儲器從圖中可看出,這4個存儲空間存在地址衝突問題:數據存儲器與程式存儲器的64KB地址空間重疊;程式存儲器中片內與片外的低4KB地址重疊;數據存儲器中片內與片外最低的256B(8031僅有低128B)地址重疊。在程式存儲器中,片內地址0000日一OOZA日的存儲空間,留給系統使用。片內數據存儲器共256B地址空間,分為低128B和高128B。低128B又分為工作暫存器區、位定址區和用戶RAM區;高128B又叫特殊功能暫存器,這些暫存器的功能具有專門的規定,用戶不能修改其結構。存儲器中共有11個可位定址的位地址。其中,片內數據存儲器中有128個;特殊功能暫存器中有83個。
MCS-51存儲器基本結構圖MCS-51存儲器基本結構圖

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),系統將從該地址取指令,並執行程式。

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屬於工作暫存器區。

附表

MCS51單片機的特殊功能暫存器
符號
地址
功能介紹
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
電源控制暫存器

相關詞條

熱門詞條

聯絡我們