1. 單片機中 什麼是片內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之類的,不是這種結構的。
2. 51子系列單片機片內RAM容量多大,分為哪幾大區域
51系列單片機片內RAM容量介紹如下:
1、 51系列,00H~7FH,分三大塊,00H~1FH為工作寄存器區,20H~2FH為位寄存器區,30H~7FH為用戶存儲器區。
2、 52系列,00H~0FFH,分四大塊,前三大塊與51系列相同,第四大塊80H~FFH為擴展用戶存儲器區,與特殊功能寄存器區地址重合。
3、STC系列單片機,很多都有512B到幾K的擴展RAM區,供用戶使用。
3. 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 來訪問了。
(3)單片機RAM表擴展閱讀:
51單片機對所有兼容Intel 8031指令系統的統稱,8004單片機成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機屬於基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
51單片機的RAM用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據,ROM用以存放程序、一些原始數據和表格。四個8位並行I/O口,既可用作輸入,也可用作輸出。T/C包括兩個定時/記數器,既可以工作在定時模式,也可譽絕游以工作在記數模式。
4. 89c52單片機的RAM為多少
哎,我都不知道怎麼說你,這種問題你第一相當的就是看89C52單片機data數據手冊啊,這個單片機手冊裡面都有的啊,給你簡單介紹一下:
RAM有------內部RAM的低128位(00-7F)
-------內部RAM的高128位(80-FF)
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)
希望我的回答對你有幫助!
5. 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,內存的具體地址都是規定好的,不需要我們劃分,只需要我們知道他們的具體地址就好了。
6. MCS-51單片機內部RAM可分為幾個區各區的主要作用是什麼
MCS-51單片機內部RAM可分為5個區:
1、存寬蔽儲矩陣區:RAM的核心區域是一個寄存器矩陣,用清猜來存儲信息,稱為存儲矩區。
2、地址解碼器區:地址解碼器區的作用是將寄存器地址所對應的二進制數譯成有效的行選信號和列選信號,從而選中該存儲單元。
3、讀/寫控制器區:訪問RAM時,對被選中的寄存器進行讀操作還是進行寫操作,是通過的讀/寫控制器區讀寫信號來進行控制的。
4、輸入/輸出區:RAM通過輸入/輸_區與計算機的CPU交換數據。輸入/輸出區數據線的條數,與一個地址中所對應的寄存器位數相同。
5、片選控制區:片選控制區就是用來實現這種控制的。控制RAM被訪問時,是否與CPU發生聯系,與其交換信息。
(6)單片機RAM表擴展閱讀:
MCS-51單片機內部RAM讀操作時,被選中單元的數據經數據線、輸入/輸出區處理後傳送給CPU;寫操作時,CPU將數據經輸入/輸出區轉化、數據線存入被選中單元。
由於受RAM的集成度限制。MCS-51單片機由許多慎正州RAM組合而成。CPU訪問存儲器時,一次只能訪問RAM中的某一片,片選控制區選中,地址解碼器的輸出信號控制該片某個地址的寄存器與CPU接通;當片選線接入無效電平時,則該片與CPU之間處於斷開狀態。
7. mcs-51單片機內部RAM的各部分作用
MCS-51系列單片機片內RAM共有128位元組,地址范圍為00H~7FH。
在這128位元組中,全部都可以按照位元組地址進行操作(讀、寫或運算),直接或間接定址方式皆可。
在這128位元組中,按照使用特點,可以分成三類:工作寄存器區、位定址區和通用數據區。
1.工作寄存器區
在MCS-51系列單片機的片內RAM中,有四個工作寄存器區,分別稱為工作寄存器區0~工作寄存器區3。
每區有八個位元組,除了可以用位元組地址號碼操作之外,還可以用R0、R1…R7為名稱對其操作。用名稱進行操作,稱為寄存器定址,指令代碼較為簡短。
其中R0、R1可以作為間接定址寄存器,以其中內容作為地址,能夠對片內RAM(或片外RAM的256位元組)進行間接定址。
在任何時刻,只能使用一個工作寄存器區。當前使用那個區,可以通過指令設置PSW中的RS1和RS0來決定。PSW稱為程序狀態字,是下面要介紹的特殊功能寄存器。
通過設置RS1和RS0,可以快速切換當前工作寄存器區,適合在不同的程序段中進行保護現場。當前沒有使用的工作寄存器區,不能使用R0、R1…R7等名稱,但可以按位元組地址對其隨意讀寫。
復位時RS1和RS0皆初始化為0,故此復位後將自動使用工作寄存器區0。
2.位定址區
位定址區共有16位元組,位元組地址為20H~2FH,每個位元組中的8個「位」,都有一個「位地址」。共有128個位,「位地址」的范圍為00H~7FH。
從表2中可以看到,前面問題所提到的「位地址4EH」,是在「位元組地址29H」中,是第6位。
對位定址區可以按照「位地址」來對某一個位單獨進行操作,也可以按照「位元組地址」進行操作,即同時對八個位地址的內容進行操作。
MCS-51系列單片機具有一套專用的「位操作」指令(又稱為布爾指令),可對這些位地址進行「與」、「或」、「非」等操作。這是該系列單片機的特色之一。
3.通用數據區
通用數據區有80位元組,只能按「位元組地址」(直接或間接定址)進行操作。
上面介紹了00H~7FH地址范圍內的RAM,下面接著這個地址,繼續向高地址方向介紹。
在片內80H~FFH地址范圍內,離散的分布著21個特殊功能寄存器(SFR),寄存器名稱與地址分布見表3。
8052系列單片機,在80H~FFH范圍內,還有128位元組的片內通用RAM,對其操作時,則必須採用「間址」定址方式。
而對這片地址范圍內的特殊功能寄存器只能採用「直接」定址方式進行操作。
特殊功能寄存器中有11個還可以進行「位定址」,表3中也列出了可以位定址的寄存器以及位地址號碼。
在表3中,如果位地址為空白,則說明該寄存器不能進行「位定址」。
由表3可以看出規律:當位元組地址可以被8整除時,該位元組即可以按位定址。其最低位的「位地址」與「位元組地址」相同,其他位的位地址向高位依次加1。
單片機自動完成賦予它的任務的過程,也就是單片機執行程序的過程,即一條條執行的指令的過程,所謂指令就是把要求單片機執行的各種操作用的命令的形式寫下來,這是在設計人員賦予它的指令系統所決定的,一條指令對應著一種基本操作;單片機所能執行的全部指令,就是該單片機的指令系統,不同種類的單片機,其指令系統亦不同。為使單片機能自動完成某一特定任務,必須把要解決的問題編成一系列指令(這些指令必須是選定單片機能識別和執行的指令),這一系列指令的集合就成為程序,程序需要預先存放在具有存儲功能的部件——存儲器中。存儲器由許多存儲單元(最小的存儲單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出並執行就像大樓房的每個房間的被分配到了唯一一個房間號一樣,每一個存儲單元也必須被分配到唯一的地址號,該地址號稱為存儲單元的地址,這樣只要知道了存儲單元的地址,就可以找到這個存儲單元,其中存儲的指令就可以被取出,然後再被執行。 程序通常是順序執行的,所以程序中的指令也是一條條順序存放的,單片機在執行程序時要能把這些指令一條條取出並加以執行,必須有一個部件能追蹤指令所在的地址,這一部件就是程序計數器PC(包含在CPU中),在開始執行程序時,給PC賦以程序中第一條指令所在的地址,然後取得每一條要執行的命令,PC在中的內容就會自動增加,增加量由本條指令長度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執行。
可以參考: http://apps.hi..com/share/detail/17443237
8. RAM在單片機裡面有哪些作用
可以直接訪問任一個存儲單元,只要知道該單元所在記憶行和記憶列的地址即可。
存儲器可分為隨機存取存儲器(RAM)和只讀存儲器(ROM)兩大類。隨機存取存儲器(RAM)既可向指定單元存入信息又可從指定單元讀出信息。任何RAM中存儲的信息在斷電後均會丟失,所以RAM是易失性存儲器。
ROM為只讀存儲器,除了固定存儲數據、表格、固化程序外,在組合邏輯電路中也有著廣泛用途。
隨機存儲用途
SRAM:靜態隨機存取存儲器採取多重晶體管設計,通常每個存儲單元使用4-6隻晶體管,但沒有電容器。SRAM主要用於緩存。
DRAM:動態隨機存取存儲器中每個存儲單元由配對出現的晶體管和電容器構成,需要不斷地刷新。
FPM DRAM:快速頁模式動態隨機存取存儲器是最早的一種DRAM。在存儲器根據行列地址進行位元定位的全程中,FPM DRAM必須處於等待狀態,數據讀取之後才能開始處理下一位數據。向二級緩存的最高傳輸速率約為176MB每秒。
EDO DRAM:擴展數據輸出動態隨機存取存儲器在處理前一位數據的過程中無需全程等待,就可以開始處理下一位數據。只要前一位數據的地址定位成功,EDO DRAM就開始為下一位數據定址。它比FPM快5%左右。向二級緩存的最高傳輸速率約為264MB每秒。
SDRAM:同步動態隨機存取存儲器利用了爆發模式的概念,大大提升了性能。
(8)單片機RAM表擴展閱讀
當電源關閉時,RAM不能保留數據。如果需要保存數據,就必須把它們寫入一個長期的存儲設備中(例如硬碟)。RAM的工作特點是通電後,隨時可在任意位置單元存取數據信息,斷電後內部信息也隨之消失。
隨機存取存儲器對環境的靜電荷非常敏感。靜電會干擾存儲器內電容器的電荷,引致數據流失,甚至燒壞電路。故此觸碰隨機存取存儲器前,應先用手觸摸金屬接地。
隨機存取存儲器依賴電容器存儲數據。電容器充滿電後代表1(二進制),未充電的代表0。由於電容器或多或少有漏電的情形,若不作特別處理,數據會漸漸隨時間流失。刷新是指定期讀取電容器的狀態,然後按照原來的狀態重新為電容器充電,彌補流失了的電荷。需要刷新正好解釋了隨機存取存儲器的易失性。
9. C51單片機內部RAM多大,有的書上說128B,有的書上說256B,弄得我暈了都。
在 51 系列單片機內部的位元組單元,共有 256 個地址。
分為低 128 位元組、高 128 位元組。
其中:
低 128 位元組,是「片內 RAM」;
高 128 位元組,是「特殊功能寄存器 SFR」,必須「直接定址」。
-------
對於 52 系列,在高 128 位元組,增加了「片內 RAM」,則必須「間接定址」。
-------
SFR,其地址與「高 128 的片內 RAM」地址相同,
但是,定址方法不同,操作的目的地,就不同。
所以,SFR,不屬於片內 RAM。