51微控制器的程式儲存器(rom)與資料儲存器(ram 是相互

2022-02-17 01:33:42 字數 5308 閱讀 7079

1樓:胖大海君

呵呵 你的問題好多呀 還是俺來回答你吧

1 概念要明確 rom 和 ram是計算機的半導體儲存器,速度與cpu相匹配,cpu只能直接訪問和執行半導體儲存器中的程式和資料。叫記憶體。

而硬碟不是半導體儲存器,速度與cpu不匹配,cpu不能直接訪問和執行半導體儲存器中的程式和資料,只有先把硬碟的內容傳遞給記憶體,cpu間接通過記憶體訪問和硬碟的程式和資料,因此硬碟叫外存。

2 rom 為只讀儲存器,寫入的程式和資料不可再更改,存放的程式斷電也不丟失。

ram是讀寫儲存器,可讀可寫,用起來方便,**低,被pc計算機廣泛使用,即做記憶體條。

缺點:斷電程式、資訊不能保留。

rom 在pc計算機中,用來存放開機的載入程式和基本的驅動程式,叫做bios.

3 pc計算機的rom和 ram的地址是統一編址的。訪問是採用相同的指令去訪問。

微控制器由於地址線的引腳數目少,分配的地址空間有限,故rom和 ram的地址是分開編址的。為兩個不同的邏輯空間,如一個程式儲存器空間 地址為0000h~ffffh.

一個片外資料儲存器空間 地址為0000h~ffffh.訪問時為了加以區分,採用不同的執行訪問不同的儲存器。

呵呵 給你介紹了半天 該給加分了吧

2樓:生活如歌

通用pc的rom,ram共用地址,比如00000h-00100h是rom,00101-fffffh是ram,這種結構稱為馮-諾伊曼結構。

51微控制器訪問rom,ram分開訪問,它們的地址可以重複,比如片外ram地址為:0000h-ffffh,rom地址也是:0000h-ffffh,但由於訪問指令不同,所以不會構成衝突,這種稱為哈佛式結構。

最後一個問題:計算機的硬碟是外存,而rom,ram是記憶體。

3樓:匿名使用者

pc機rom和ram地址是公用的,為了便於儲存器管理,一般都用「段」來區分,有程式段,資料段等等

89c51微控制器訪問外部資料儲存器ram、rom,應該使用什麼指令?

4樓:生活如歌

彙編指令:

外部ram用movx指令,例如:movx a,@dptr

rom不分片內片外一律用movc指令,例如:movc a,@a+dptr

5樓:匿名使用者

彙編:來

讀寫外部

源ram用 movx

movx a,@dptr ;讀外部ram

movx @dptr,a ;寫外部ram

其中dptr代表地址

movc片內片外都可以訪問

movc a,@a+dptr

當地址超過內部rom地址後自動讀取外部romc語言:

包含使用xbyte讀寫外部ram

xbyte[0x001f]=0xff;//把0xff寫入外部ram 0x001f地址

unsigned char i;

i=xbyte[0x001f];//讀取外部ram 0x001f地址的資料

使用cbyte讀寫內/外部rom

用法跟讀寫ram一樣

80c51微控制器片內資料儲存器(ram)的三個儲存區域是如何劃分的?

6樓:匿名使用者

內部資料儲存器ram 物理上分為兩大區:00h ~ 7fh即128b內ram 和 sfr區。資料儲存器空間(低128單元);特殊功能暫存器空間(高128單元);這兩個空間是相連的,從使用者角度而言,低128單元才是真正的資料儲存器。

在片內ram低128單元中,通用暫存器佔去32個單元,位定址區佔去16個單元,剩下的80個單元就是供使用者使用的一般ram區了,地址單元為30h-7fh。對這部份區域的使用不作任何規定和限制,但應說明的是,堆疊一般開闢在這個區域。

7樓:做而論道

參考

mcs-51微控制器可擴充套件的程式儲存器和資料儲存器的地址空間各為多少?

8樓:做而論道

一樓給出的是復mcs-51單片

機_全部所有的制_儲存空間的大小,是正確的。

要是討論「可擴充套件」的地址空間,則有兩個方面:

程式儲存器「可擴充套件」的地址空間:64kb 減去 片內已有的;

資料儲存器「可擴充套件」的地址空間:64kb。

9樓:匿名使用者

51的儲存器從來功能上來說可以分為程式自儲存器和資料存bai儲器,至於到底能du擴充套件多少zhi儲存空間,要看你擴充套件的是哪一dao類儲存器。

訪問儲存空間時,需要用到兩個指標變數,為dptr何pc。其中pc為程式計數器,指向下一條需要執行的指令的地址,dptr為資料指標暫存器,這兩個變數的長度都為16位,這是51微控制器內部結構決定的,無法改變。所以這兩個指標的定址能力都為64k。

這樣看來,兩類儲存器的擴充套件能力都為64k 。但是,如果你實際擴充套件過儲存器,你就可以發現程式儲存器的擴充套件能力並沒有64k!!!

這是為什麼呢????

這得從51微控制器的儲存空間的編址說起。這裡僅作簡單說明,具體可以看教科書。簡單地說,內部程式儲存器和外部程式儲存器是一起編址的,它們分別佔用64k地址的一部分,所以外部擴充套件時要減去內部的地址空間,當然小於64k啦。

而資料儲存器是內外部分別編址,內外部資料儲存器用不同的指令進行訪問,所以不用擔心微控制器會混淆內外部資料儲存器,所以外部資料儲存器擴充套件能力有64k

10樓:匿名使用者

都是64kb,樓上誤認啊,8051有rom的8031沒有

11樓:匿名使用者

(1)對於8051單片copy機來說,由bai於片內無rom,只能外部擴du展程式儲存器,求地址zhi

範圍是0000h~ffffh;即dao64kb。

(2)8051微控制器片外資料儲存器空間為64kb,地址為0000h~ffffh;片記憶體儲器空間為256b,地址00h~ffh。

mcs—51微控制器資料儲存器ram分佈情況,說明片內和片外如何區分

12樓:做而論道

片內,00h~7fh,共 128 位元組;

片外,0000h~ffffh,共 65536 位元組,即 64k。

如何區分:

是要求用肉眼區分嗎?

片內 ram,是買來一片 51 微控制器晶片時,裡面自帶的。

片外 ram,需要另外再買幾塊 ram 晶片,焊接到電路板上。

用肉眼觀察,立即就可以區分出來。

13樓:

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之類的,不是這種結構的。

14樓:紫色學習

mcs—51微控制器資料儲存器ram分佈情況及區分:片內 ram,是買來一片 51 微控制器晶片時,裡面自帶的。片外 ram,需要另外再買幾塊 ram 晶片,焊接到電路板上。

微控制器(microcontrollers)是一種積體電路晶片,是採用超大規模積體電路技術把具有資料處理能力的**處理器cpu、隨機儲存器ram、只讀儲存器rom、多種i/o口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調製電路、模擬多路轉換器、a/d轉換器等電路)整合到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位微控制器,發展到現在的300m的高速微控制器。

51微控制器中程式儲存器與數資料儲存器地址一樣如何儲存資訊

那就存唄。程式儲存器 資料儲存器,是兩個不同的儲存晶片,即使地址號碼相同,也沒有任何關聯。首先要搞清一個問題,對於51微控制器擴充套件外部資料儲存器時,才會有程式儲存器和資料儲存器的地址相同。其次是程式儲存器在正常的工作時,是不能儲存資料的,只有在程式設計狀態下才可以寫資料的,而正常工作時只能讀出程...

51微控制器資料搬運c語言程式,51微控制器訪問片內資料儲存器某單元的內容用c語言怎麼寫???

aa i bb i 51微控制器訪問片內資料儲存器某單元的內容用c語言怎麼寫?方法1 char data p 定義一個指向片內ram地址的指標 p 0x30 片內ram地址為0x30 p 0x12 向0x30內寫入立即數0x12 方法2 include char x x dbyte 0x30 將片內...

51微控制器與430微控制器的區別,430微控制器與51微控制器有什麼區別

首先,89c 51 單片 1 51單片 bai機是8位單 片機,du430是16位微控制器zhi。2 51微控制器dao效能和功耗上都不如版430微控制器,430微控制器被認權 為是現在功耗最低的微控制器。3 51微控制器主要用在一些比較簡單的工業裝置控制上,430主要用在一些低功耗手持裝置上 4 ...