⑴ 單片機中 什麼是片內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之類的,不是這種結構的。
⑵ MCS-51單片機片內RAM的組成的劃分方式和功能分別是什麼
51單顫消明片機的具茄告體存儲器地址分配
數據存儲器(RAM)為 256 位元組, 地址范圍為00H~FFH, 分為兩大部分: 低 128 位元組(00H~7FH)為真正的RAM區; 高 128 位元組(80H~FFH)為特殊功能寄存器區SFR。
程序存儲器(ROM)的內部地址橋伍為 0000H~0FFFH, 共 4 KB; 外部地址為 1000H~FFFFH, 共 60 KB。 當程序計數器由內部 0FFFH執行到外部 1000H 時, 會自動跳轉。
一般分為數據存儲器RAM,程序存儲器ROM,內存的具體地址都是規定好的,不需要我們劃分,只需要我們知道他們的具體地址就好了。
⑶ MCS-51系列單片機片內RAM與片外RAM存儲器各有哪些定址方式
片內RAM的定址的定址方式有:立即數定址、直接定址、寄存器定址、寄存器間接定址和位定址。
片外RAM的定址方式只有間接定址。
訪問片外RAM只有寄存器間接定址,MOVX A,@DPTR,MOV A,@RI,MOV @DPTR.A,MOV @RI,A,只有這四個指令,其它就沒有了。
訪問ROM(ROM不分片內片外)只有變址定址了,MOVC A,@A+DPTR,MOVC A,@A+PC.其它也沒有了。
⑷ 52單片機片內ram容量
256位元組。52單片機全稱STC89C52單片機,STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器,其中單片機片內ram容量為256位元組,容量夠用。
⑸ 51單片機內部RAM
51單片機內部RAM具體要看產品配置。
分為兩種情況:
1:如果片內只有128位元組的RAM,則訪問RAM使用直接或者間接定址方式,地址為00H-7FH,在80H-FFH的空間分配給了SFR,只能使用直接定址方式。
2:片內RAM為256位元組時,低128位元組(00H-7FH)的訪問方式為直接和間接定址方式,高128位元組(地址80H-FFH)只能使用間接定址方式。
SFR的地址也為80H-FFH,但只能使用直接定址方式。
具體產品有詳細的說明書。
⑹ 51單片機內部ram,外部ram的區別
單片機的這 512 位元組的 RAM在地位上並不宏雹都是平等的,而是分塊的,塊與塊之間在物理結構和用法上都是有區別的,因此形成51單片機內部ram和外部ram的區別。
一、從使用位元組區別。標准 51單片機的片內 RAM 地址從 0x00H~0x7F 共 128 個位元組。而現在我們用的 51 系列的單片機都是帶擴展片內 RAM 的,即 RAM 是從 0x00~0xFF 共 256 個位元組。而片外 RAM 最大可以擴展到 0x0000~0xFFFF 共 64K 位元組。
二、從慶銷連接地址區別。片內 RAM 和片外 RAM 的地址不是連起來的,片內是從 0x00 開始,片外也是從 0x0000 開始的,分別形成data,即片內 RAM 從 0x00~0x7F;idata,即片內 RAM 從 0x00~0xFF;pdata,即片外 RAM 從 0x00~0xFF;xdata,即片外 RAM 從 0x0000~0xFFFF。
一般情況下,使用 data 區域,data 不夠用了,就用 xdata,如果希望程序執行效率盡量高一點,就使用 pdata 關鍵字來定義。其它型號有更大的 RAM 的 51 系列單片機,如果要使用更大的 RAM,就必須得用 xdata 來訪問了。
(6)單片機的片內ram擴展閱讀:
51單片機對所有兼容Intel 8031指令系統的統稱,8004單片機成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機屬於基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
51單片機的RAM用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據,ROM用以存放程序、一些原始數據和表格。四個8位並行I/O口,既可用作輸入,也可用作輸出。T/C包括兩個定時/記數器,既可以工作在定時模式,也可譽絕游以工作在記數模式。
⑺ 80c51單片機片內RAM只有128位元組,為什麼卻可以劃分為低128位元組和高128位元組
嚴格來說,51單片機內部RAM是256位元組,高128位元組被SFR佔用,為什麼一般認為內部RAM為128位元組呢,是為了區分SFR和低128位元組空間,兩者定址方式不一樣。至於為什麼不一樣取決於要分辨51單片機和52單片機,52單片機高位128不是作為SFR,屬於內部RAM,但是規定只能使用間接定址(區分51內部RAM高128位)
⑻ mcs-51單片機內部RAM的各部分作用是什麼
內部RAM共256個單元,用戶使用前128個單元,用於存放可讀寫數據,後128個單元被專用寄存器佔用。
前128單元具體分為:
1、工作寄存器區:共4個組,每組為8個存儲單元,即00H-07H,08H-0FH,10H-17H,18H-1FH,具體選擇哪一個由仿慎程序狀態字(PSW)中的RS1和RS0的組合決定。
2、位定址區:20H-2FH,共16個單元,每一位可以進行位定址(16*8=128個位地址),就是每一個觸發位,就是bit可以定址。
3、便箋區:從30H-7FH,共80個單元,用於存放用戶數據或作堆棧區使用。
4、從80H-FFH為專用寄存器佔用,其中還離散的分布SFR(21個特殊功能寄存器)。
⑼ MCS-51單片機內部RAM可分為幾個區各區的主要作用是什麼
MCS-51單片機內部RAM可分為5個區:
1、存寬蔽儲矩陣區:RAM的核心區域是一個寄存器矩陣,用清猜來存儲信息,稱為存儲矩區。
2、地址解碼器區:地址解碼器區的作用是將寄存器地址所對應的二進制數譯成有效的行選信號和列選信號,從而選中該存儲單元。
3、讀/寫控制器區:訪問RAM時,對被選中的寄存器進行讀操作還是進行寫操作,是通過的讀/寫控制器區讀寫信號來進行控制的。
4、輸入/輸出區:RAM通過輸入/輸_區與計算機的CPU交換數據。輸入/輸出區數據線的條數,與一個地址中所對應的寄存器位數相同。
5、片選控制區:片選控制區就是用來實現這種控制的。控制RAM被訪問時,是否與CPU發生聯系,與其交換信息。
(9)單片機的片內ram擴展閱讀:
MCS-51單片機內部RAM讀操作時,被選中單元的數據經數據線、輸入/輸出區處理後傳送給CPU;寫操作時,CPU將數據經輸入/輸出區轉化、數據線存入被選中單元。
由於受RAM的集成度限制。MCS-51單片機由許多慎正州RAM組合而成。CPU訪問存儲器時,一次只能訪問RAM中的某一片,片選控制區選中,地址解碼器的輸出信號控制該片某個地址的寄存器與CPU接通;當片選線接入無效電平時,則該片與CPU之間處於斷開狀態。