Ⅰ 單片機的數據存儲器是指外部存貯器
單片機的數據存儲器是指外部存貯器是對的。單片機的分為數據存儲器和程序存儲器。單片機內部的存儲器稱為片內存儲器,片外擴展的存儲器成為片外存儲器。
Ⅱ 80c51單片機的片內片外程序存儲器和片內片外數據存儲器訪問如何區分
管腿EA接高電平,單片機首先訪問內部ROM,當地址值超過4K(0FFFH)時自動訪問外部ROM。EA接低電平,單片機只訪問外部ROM。
對於數據的話,可以通過定義來區分,idata,即片內 RAM 從 0x00~0xFF;pdata,即片外 RAM 從 0x00~0xFF;xdata,即片外 RAM 從 0x0000~0xFFFF。
Ⅲ 單片機中 什麼是片內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之類的,不是這種結構的。
Ⅳ 單片機讀、寫片外數據存儲器採用
單片機讀、寫片外數據存儲器採用MOVX指令
MOVX
@Ri,A和MOVX
@DPTR,A從片外讀取數據到ACC
MOVX
A,@Ri和MOVX
A,@DPTR把ACC數據送到片外
Ⅳ 51單片機的片內存儲器和片外存儲器都是在晶元內部嗎
傳統上,片內存儲器是在晶元內部,片外存儲器是在晶元外部。顧名思義嘛。
隨著晶元的發展,有些擴展型51單片機會在片內擴展一些SRAM方便使用,這些SRAM會映射在片外存儲空間內,使用時通過訪問片外存儲空間的低地址來訪問這些「實際上在片內」的SRAM。
Ⅵ 單片機中數據存儲器可分為
按照位置區分,可分為片內存儲器和片外存儲器。
按照訪問方式區分,可分為直接定址存儲器和間接定址存儲器。
Ⅶ 在MCS-51單片機存儲器擴展中,區分擴展的是片外程序存儲器還是片外數據存儲器的方法是什麼
硬體上,控制信號不一樣:片外程序存儲器工作,要PSEN信號有效;片外數據存儲器工作,要RD或WR信號有效;x0dx0a軟體上,定址不一樣,片外程序存儲器工作,要用MOVC,x0dx0a片外數據存儲器工作,要用MOVX;x0dx0a雖然說他們的地址都是0000H~FFFFH,不會發生沖突的
Ⅷ 單片機的片內和片外存儲器的功能各是什麼
單片機的存儲器的按功能分為RAM和ROM,RAM常用作寄存器和數據存儲器,ROM都用作程序存儲器,片內和片外沒什麼差別,往往是片內不夠用,片外擴充,當然,單片機的特殊寄存器(用作運算或設置單片機功能)一定在片內,而且也是不能擴充的。