關於微控制器儲存器的問題,idata,data,badata,xdata,pdata

2021-08-11 04:06:39 字數 2198 閱讀 6127

1樓:

關於51微控制器記憶體問題,一直是個疑惑大家的問題,因為51微控制器是個很另類的微控制器。

下面我給樓主講解一下:

51微控制器之所以另類,是因為,他定址記憶體的空間,不是靠匯流排,是用指令的方式。

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

最後,回答樓主的問題:

片外儲存區是什麼?

這個問題太模糊,答案可以是外擴的flash,也可以說是外擴的ram,

如果問題是這麼問的:

程式或者常量儲存在片外儲存區,這個片外儲存區指的是什麼?

答案是外擴flash;

如果問題是---變數儲存在片外儲存區,這個片外儲存區指的是什麼?

答案是外擴ram;

一般來說,如果不指明的話,外記憶體儲區,行業內人士指的是外部的ram。

片記憶體儲器是什麼?是不是就是內部的e2prom?

片記憶體儲區一般來說,指的是內部的ram,包括高128位(idata)和低128位(data)

片記憶體儲器,這個說法我沒聽說過,可能是eeprom吧。

2樓:做而論道

樓主問的是什麼微控制器?

關於微控制器的電焊需要什麼的問題,微控制器及電路板的焊接需要些什麼工具 要不要靠一些機械裝置來進行

首先,作為一個電子專業的學生,你的問題不專業。可能你比較在行的是軟體。需要用到的工具有 電烙鐵,焊錫絲,鑷子,偏口鉗,還有洞洞板,好多。你可以參考你買的tx 1c的板子買元器件。要想自己設計電路,要學好數位電路和類比電路,以及電路設計,當然電工學也要學。首先,我以實際經驗告訴你,是的,要好好學,當時...

微控制器原理的參考文獻有哪些,急求關於微控制器的外文參考文獻五篇,不要具體內容,只要標題,作者,年份,型別等就可以了

1 李廣弟等 微控制器基礎 北京航空航天出版社,2001.7 2 樓然苗等 51 系列微控制器設計例項 北京航空航天出版社,2003.3 3 唐俊翟等 微控制器原理與應用 冶金工業出版社,2003.9 4 劉瑞新等 微控制器原理及應用教程 機械工業出版社,2003.7 5 吳國經等 微控制器應用技術...

微控制器定時器 問題

做一個時鐘,24小時一個迴圈週期,每個分度的時間長短根據實際情況定。時鐘工作在定時器中斷子程式裡,主程式不斷和時鐘對時,如果符合設定值就開通電機。下面的程式你參考下,裡面具體的值我沒算過,你自己算下改了吧。如果分頻暫存器不夠按我的演算法加。別說不會哦。org 00h ljmp start org 0...