-
單片機存儲器
鎖定
目錄
- ▪ 介紹
- 3 特殊功能寄存器
- ▪ 介紹
- ▪ 分類
- 4 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個
[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箇中斷源的中斷服務程序的入口地址。
單片機存儲器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 | 電源控制寄存器 |
- 參考資料
-
- 1. MCS-51單片機存儲器結構詳解 .中國知網[引用日期2015-01-26]