Ⅰ 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之類的,不是這種結構的。
Ⅲ 單片機的片內和片外存儲器的功能各是什麼
單片機的存儲器的按功能分為RAM和ROM,RAM常用作寄存器和數據存儲器,ROM都用作程序存儲器,片內和片外沒什麼差別,往往是片內不夠用,片外擴充,當然,單片機的特殊寄存器(用作運算或設置單片機功能)一定在片內,而且也是不能擴充的。
Ⅳ 單片機片內存儲器和片外存儲器的作用和概念
單片機片內存儲器包括片內ROM和片內RAM,片內ROM用於存儲程序代碼,片內RAM包括寄存器和片內擴展RAM,比如STC的很多型號都有片內擴展EEPROM。
片外存儲器包括片外ROM和片外RAM,片外ROM用戶存儲程序代碼,片外RAM用於存儲用戶的可改寫數據。
Ⅳ 「MCS-51系列單片機中,片內程序存儲器為4KB」,而同時又說「程序存儲器的定址空間為64KB」,求區別!
4K的存儲器表示這個51晶元的實際硬體的容量,你的程序受這個4K限制;
64K是51可以處理的地址能力范圍,這個是潛力而已。
有能力並不表示要把所有潛力轉化為實際的實力啊。
實際上,通過硬體電路的設計,是可以突破64K的限制的,不過這是另一方面的問題了。
Ⅵ 單片機中經常講到的片內和片外是什麼含義
片內程序儲存器就是單片機內部FLASH 程序存儲器 片內數據存儲器不用多說就是單片機內部RAM,何為片外我來解釋,51單片機有P0,P1,P2,P3,
當你的程序大於內部FLASH存儲器時,這時就需要外接硬體來擴展外部存儲器,P0和P2口是用來做擴展外部存儲器時的地址匯流排,P0做低8位 P2為高8位連接外部硬體(就是外部的硬體存儲器) 擴展范圍可達到64K 這時外部擴展的存儲器就叫片外存儲器
Ⅶ MCS-51系列單片機的存儲器可劃分為幾個空間,地址范圍以及容量是多少
MCS-51單片機在物理的角度上有四個存儲空間:
1、片內程序存儲器
2、片外程序存儲器
3、片內數據存儲器
4、片外數據存儲器
但在邏輯上,從用戶的角度上,單片機有三個存儲空間:
1、片內外統一編址的64K的程序存儲器地址空間(MOVC)
2、256B的片內數據存儲器的地址空間(MOV)
3、以及64K片外數據存儲器的地址空間(MOVX)