A. 存儲器擴展時,什麼叫地址空間不連續和地址重疊現象是什麼原因引起的
gidhgyp
B. 單片機中地址重合,物理區間分開是什麼意思
兩個不同的存儲空間可以使用相同的地址區間,用不同的定址方式、不同的指令來區分存儲器,CPU就明白了。
MOV 間接定址,訪問片內 RAM;
MOV 直接定址,訪問 SFR;
MOVX 訪問外部 RAM;
MOVC 訪問 ROM。
C. 簡述51單片機的存儲器邏輯空間分布,並說明當存儲器地址發生重疊時應如何處
MCS-51單片機存儲器結構
1、 程序存儲器
MCS-51具有64kB程序存儲器定址空間,它是用於存放用戶程序、數據和表格等信息。對於內部無ROM的8031單片機,它的程序存儲器必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程序存儲器讀取程序。對於內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程序存儲中讀取程序,當PC值超過內部ROM的容量時,才會轉向外部的程序存儲器讀取程序。
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個地址單元是不能存下完整的中斷服務程序的,因而一般也在中斷響應的地址區安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間去執行,這樣中斷響應後,CPU讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程序。
2、 數據存儲器
數據存儲器也稱為隨機存取數據存儲器。MCS-51單片機的數據存儲器在物理上和邏輯上都分為兩個地址空間,一個是內部數據存儲區和一個外部數據存儲區。MCS-51內部RAM有128或256個位元組的用戶數據存儲(不同的型號有分別),它們是用於存放執行的中間結果和過程數據的。MCS-51的數據存儲器均可讀寫,部分單元還可以位定址。
8051內部RAM共有256個單元,這256個單元共分為兩部分。其一是地址從00H—7FH單元(共128個位元組)為用戶數據RAM。從80H—FFH地址單元(也是128個位元組)為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。
在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那麼在程序中怎麼區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程序狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的第3和第4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關系如圖2所示。
內部RAM的20H—2FH單元為位定址區,既可作為一般單元用位元組定址,也可對它們的位進行定址。位定址區共有16個位元組,128個位,位地址為00H—7FH。位地址分配如表1所示,CPU能直接定址這些位,執行例如置「1」、清「0」、求「反」、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為定址區。
D. 64k程序存儲器和64k片外存儲器地址空間是重合的,兩者如何區分
控制信號不一樣,訪問程序存儲器是PSEN有效,訪問片外存儲是RD WR。
E. 51單片機存儲器擴展地址重疊問題
關鍵是你要搞清楚單片機片內的RAM能不能達到FFE0這個地址?FFE0幾乎等於64K了,單片機內有64K的RAM嗎?至少在常用的單片機中還沒見到過。
如果是片內有1K的RAM,在訪問的地址小於1K時,通過設定某些SFR來確定是訪問內部的RAM還是外部的RAM,所以不會重疊,具體內容看STC單片機的資料說明。
F. 存儲器的地址重疊現象是怎麼回事
地址重疊使用,節省地址存儲空間,提高定址速度。
就是一把鑰匙開幾個門,但因為採用了不同的操作指令及控制信號的選擇,所以不會發生混亂。
G. 存儲器擴展時,什麼叫地址空間不連續和地址重疊現象
採用部分解碼時,未用的地址線,可以隨意取1、取0。
那麼,對於某個存儲單元來說,就可用多個地址號碼來選中。
即:一個存儲器晶元,佔用了一個以上的地址空間。
這種現象,並不是【地址重疊】。Alfg5 的答案,是錯誤的。
另外,如果未用的地址線,是高位地址線,且都取0,
那麼,由部分解碼所形成的地址空間,也是連續的。
那麼,什麼是地址重疊呢?
不同的存儲晶元,具有同一個地址空間,這才是【地址重疊】。
採用線選法擴展存儲空間,才會有【地址重疊】的現象。
使用重疊的地址,就可令多塊晶元,同時寫入讀出。
那麼,重疊的地址,就是不可用的。
因此,可用的地址,就是不連續的。
在 51 單片機中,有許多地址重疊的現象,比如:
程序存儲器、數據存儲器的地址都是 0000~FFFFH。
特殊功能寄存器和高128B 的片內 RAM,地址,也重疊了。
位地址,也是重復使用了相同的地址號碼。
還有,八個寄存器 R0~R7,卻佔用了 32 個存儲單元。
就是說:
【地址重疊】是指:同一個地址空間,涉及到了不同的存儲區域。
而不是Alfg5 所答的:不同的地址,選通同一存儲單元。
搞清楚了基本概念,求可用的地址,以及,分析不可用的重疊地址,就不是難事了。
H. 用什麼方法來區分,片外數據存儲器與片內數據存儲器分開編址而出現的地址重疊呢
片外數據儲存器存取用MOVX指令
片內存儲器存取使用MOV指令。
I. 51單片機在選取外部存儲器的時候,當程序存儲器ROM和數據存儲器RAM地址重疊的時候,是怎麼區分ROM和RAM的
在硬體上,當讀ROM程序區時,是用PSEN(非)選中ROM存儲器的,而讀/寫數據存儲器時,是由MOVX指令讀/寫的,硬體上是用RD(非)讀的,用WR(非)寫的。