❶ 89C51單片機訪問外部數據存儲器RAM、ROM,應該使用什麼指令
匯編指令:
外部RAM用MOVX指令,例如:MOVX A,@DPTR
ROM不分片內片外一律用MOVC指令,例如:MOVC A,@A+DPTR
❷ RAM的三個物理空間
ROM,RAM和片外ROM、RAM。
拓展:
內部的ROM及外部RAM的空間分配 1/5 免廣告閱讀
從物理構造的角度講、51單片機的存儲系統可以分為四個存儲空間:既片ROM,RAM和片外 ROM、RAM。從邏輯構造上看〔既端程的角度],可以分為三個不同的空間:
[1)片、片外統一編址的64KB的程序存儲器地址空間:0000H-FFFFH(用16 位地址);;其中 0000H-0FFFH 為片 4KB 的 ROM 地址空間,1000H-FFFFH 方外部ROM 地空間;
[2] 256B的部數據存儲器地址空間【用8位地址],00H-FFH,分為兩大局部,其中00H~7FH(共128B 單元】為鄰靜態 RAM的地址空間。80H-FH為特球動車
存放器的地址空間,21個特殊功能存放器離散地分布在這個區域;
[3] 64KB的外部數據存儲器地址空間(用16位地址):0000H~FFFFH,包括擴展 I/O 地址空間。
上述4個存儲空間地址是重春的。如困1所示。8051的指今系統設計了不同的教據傳送指令以區別這4個不同的邏超交間:CPU片片外ROM 存合屏NOVC,其外RA
指令用MOVX.片RAM 指令用 MOV。
程序存儲器用於存放編好的程序和表格常數。程序通過16位程序計數器定址,定址能力為64KB。這使得指令能在64KB 的地址空間任意現轉,但不能使程序從程序存儲空間轉移到數據存儲器空間。
❸ 單片機中 什麼是片內RAM和片外RAM,RAM就是數據存儲器嗎
51單片機有以下幾個內存模塊組成:
1】rom或者flash,叫程序存儲區,你寫的程序是存在這裡面的,上電後從這裡面執行。
程序存儲區也分為片內和片外,一般來說,現在的51很多已經做到了64k,所以很少有外擴
片外flash或者片外的rom了,flash或者rom不管是片內還是片外的,只能用來定義常量,是用code來修飾,也就是說,用code來修飾的東西,在程序運行過程中,不能修改;
2】ram有------內部ram的低128位(00-7f),對應c語言就是data,比如我定義一個變數,
data
unsigned
char
var
=
0;
那麼,這個
var變數就是放在內部的低128位ram中
-------內部ram的高128位(80-ff),對應c語言就是idata,比如我定義一個變數,
idata
unsigned
char
var
=
0;
那麼,這個
var變數就是放在內部的高128位ram中
-------特殊功能寄存器(sfr)(80-ff),對應c語言就是sfr比如我定義一個變數,
sfr
unsigned
char
var
=
0x90;
那麼,這個
var變數就是放在內部的特殊功能寄存器中,這是你對var操作,相當於操作一個特殊的寄存器,但是小心,不能隨便定義sfr變數,很危險
------外部ram
64k(0000-ffff)
外部的ram可以擴展到65536個,但是前256個算是一頁,這一頁比較特殊,是用
pdata來修飾的,當然,也可以用xdata來修飾。
除了第一頁的256個以外的其他65280個空間,只能用xdata來修飾;
回過頭來討論pdata和xdata,這兩個都能修飾外部ram的第一頁,但是,pdata只能修飾第一頁,即最前面的256個外部ram,那麼,這最前面的256個到底用pdata還是xdata好的呢?
答案是pdata,因為xdata修飾的變數,用的是dptr定址,pdata用的是r0和r1.dptr因為是16位的,所以可以覆蓋整個的64k外部ram,r0和r1是8位,所以只能定址最前面的256個,也就是外部ram的第一頁,但是,用r0定址,比dptr快一倍,代碼也小的很多
樓主又疑惑了,好多地址是重復的,比如,我向80h地址寫一個數值,單片機怎麼知道讀的是內部的高128位ram?還是sfr?還是外部64k的ram呢?
答案是用指令,如果是直接定址,那麼訪問的就是sfr,如果是r0或者r1間接定址,就是內部高128位ram,如果是dptr或者是r0,r1間接定址,且配合的是movx指令,那麼就是訪問外部64kram中的第80h個地址。
概括一下來說,51的內存由以下組成:
1----程序存儲器(包括片內flash或rom,也包括片外flash或rom,c語言用code定義)
2----內部低128位ram,c語言用data定義
3---內部高128位ram,c語言用idata定義
4---內部sfr,c語言用sfr定義
5---外部65536個ram(通常,很多單片機廠家不會給你擴展那麼多的,一般來說擴展256個位元組或者1024個位元組就差不多了,最近宏晶的出了個擴展4096位元組的。這65536位元組的ram,前256個可以用pdata修飾,也可以用xdata修飾,超過256個之後的,只能用xdata修飾)
以上所說的只是針對51內核的單片機,其他內核的,像arm之類的,不是這種結構的。
❹ 內存中的RAM容量指什麼RAM是什麼意思
內存中的RAM容量指指的是計算機的內存容量,是內存條的關鍵性參數。內存的容量一般都是2的整次方倍,比如64MB、128MB、256MB等,一般而言,內存容量越大越有利於系統的運行。
RAM(Random Access Memory)的全名為隨機存取記憶體,它相當於PC機上的移動存儲,用來存儲和保存數據的。它在任何時候都可以讀寫,RAM通常是作為操作系統或其他正在運行程序的臨時存儲介質(可稱作系統內存)。
當電源關閉時RAM不能保留數據,如果需要保存數據,就必須把它們寫入到一個長期的存儲器中(例如硬碟)。正因為如此,有時也將RAM稱作「可變存儲器」。RAM內存可以進一步分為靜態RAM(SRAM)和動態內存(DRAM)兩大類。
(4)外部數據存儲區ram擴展閱讀:
RAM的分類:
①靜態隨機存儲器(SRAM):靜態存儲單元是在靜態觸發器的基礎上附加門控管而構成的。因此,它是靠觸發器的自保功能存儲數據的。
②動態隨機存儲器(DRAM):動態RAM的存儲矩陣由動態MOS存儲單元組成。動態MOS存儲單元利用MOS管的柵極電容來存儲信息,但由於柵極電容的容量很小,而漏電流又不可能絕對等於0,所以電荷保存的時間有限。為了避免存儲信息的丟失,必須定時地給電容補充漏掉的電荷。
通常把這種操作稱為「刷新」或「再生」,因此DRAM內部要有刷新控制電路,其操作也比靜態RAM復雜。然而,由於DRAM存儲單元的結構能做得非常簡單,所用元件少,功耗低,已成為大容量RAM的主流產品。
❺ 單片機中存儲器分類,按照內部和外部、ROM和RAM進行分類
單片機中存儲器分類,分為內部ROM和外部ROM。數據存儲器分為內部RAM和擴展的外部數據存儲器RAM。
按照內部ROM分類,分為掩膜ROM,可一次性編程的PROM,多次擦除/燒寫的EPROM,可在線編程的FLASH。
❻ 我想問問簡述ram和rom的區別
ram和rom的區如下:
RAM(randomaccessmemory)即隨機存儲內存,可以隨機讀和寫。這種存儲器在斷電時將丟失其存儲內容,故主要用於存儲短時間使用的程序,儲存進食文件。屬於一種內存技術。
ROM(Read-OnlyMemory)即只讀內存,只能讀不能寫。是一種只能讀出事先所存數據的固態半導體存儲器,即使掉電後也能找到之前存儲的文件。是一種硬碟技術。
手機中的RAM和ROM分別對應電腦的內存和硬碟,內存負責程序的運行以及數據交換,有了它,電腦中的軟體才能運行,並有了進程;而硬碟就是一塊存儲空間,您可以存儲各種各樣的文件,包括視頻、照片、音樂、軟體等。
內存(Memory)是計算機中重要的部件之一,由內存晶元、電路板、金手指等部分組成,它是與CPU進行溝通的橋梁。內存也被稱為內存儲器,其作用是用於暫時存放CPU中的運算數據,以及與硬碟等外部存儲器交換的數據。
更多關於簡述ram和rom的區別,進入:https://m.abcgonglue.com/ask/79351c1615755651.html?zd查看更多內容