A. 單片機存儲器分為哪幾類,各有哪些特點和用
單片機存儲器分為:程序存儲器和數據存儲器。
數據存儲器又分為:內部數據存儲器和外部數據存儲器。
內部數據存儲器又分為:
1、工作寄存器,共4組,地址范圍00H~1FH
2、位址空間,地址范圍20H~2FH
3、用戶寄存器,地址范圍30H~7FH(FFH)
4、特殊功能寄存器,地址范圍80H~FFH
B. 關於單片機存儲器的問題,idata,data,badata,xdata,pdata,code,片內存儲區,片外存儲區都是些什麼關系啊
關於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吧。
C. 單片機中 什麼是片內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之類的,不是這種結構的。
D. 單片機存儲器主要由哪幾個部分組成,如何使用
存儲器由存儲體、地址解碼器和控制電路組成。
1)存儲體是存儲數據信息的載體。由一系列存儲單元組成,每個存儲單元都有確定的地址。存儲單元通常按位元組編址,一個存儲單元為一個位元組,每個位元組能存放一個8位二進制數。就像一個大倉庫,分成許多房間,大倉庫相當於存儲體,房間相當於位元組,房間都有編號,編號就是地址。
2)地址解碼器將CPU發出的地址信號轉換為對存儲體中某一存儲單元的選通信號。相當於CPU給出地址,地址解碼器找出相應地址房間的鑰匙。通常地址是8位或1 6位,輸入到地址解碼器,產生相應的選通線,8位地址能產生28=256根選通線,即能選通256位元組。16位地址能產生216=65536=64K根選通線,即能選通64K位元組。當然要產生65536根選通線是很難想像的,實際上它是分成256根行線和256根列線,256 X 256=65536,合起來能選通65536個存儲單元。
3)存儲器控制電路包括片選控制、讀/寫控制和帶三態門的輸入/輸出緩沖電路。
①片選控制確定存儲器晶元是否工作。
②讀/寫控制確定數據傳輸方向;若是讀指令,則將已被選通的存儲單元中的內容傳送到數據匯流排上;若是寫指令,則將數據匯流排上的數據傳送到已被選通的存儲單元中。
③帶三態門的輸入/輸出緩沖電路用於數據緩沖和防止匯流排上數據競爭。數據匯流排相當於一條車流頻繁的大馬路,必須在綠燈條件下,車輛才能進入這條大馬路,否則要撞車發生交通事故。同理,存儲器的輸出端是連接在數據匯流排上的,存儲器中的數據是不能隨意傳送到數據匯流排上的。例如,若數據匯流排上的數據是「1」(高電平5V),存儲器中的數據是「0」(低電平OV),兩種數據若碰到一起就會發生短路而損壞單片機。因此,存儲器輸出埠不僅能呈現「1」和「O」兩種狀態,還應具有第三種狀態「高阻"態。呈「高阻"態時,它們的輸出埠相當於斷開,對數據匯流排不起作用,此時數據匯流排可被其他器件佔用。當其他器件呈「高阻"態時,存儲器在片選允許和輸出允許的條件下,才能將自己的數據輸出到數據匯流排上。
E. 單片機中的存儲器和寄存器是干什麼用得
1,單片機中的存儲器:分為FLASH和RAM,前者下載程序代碼和存貯數據,後者是代碼運行數據緩存所定義的變數
2,寄存器是單片機中控制模塊控制字讀寫,如串口的SCON、I2C、SPI的寄存器等。
F. 單片機是有哪些模塊組成的
單片機是由運算器、控制器、主要寄存器三個模塊組成的。
運算器由運算部件算術邏輯單元、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。
控制器由程序計數器、指令寄存器、指令解碼器、時序發生器和操作控制器等組成,是發布命令的「決策機構」,即協調和指揮整個微機系統的操作。
(6)單片機號碼存儲模塊用什麼擴展閱讀
單片機是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
單片機不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。
一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
G. 請問單片機存儲掉電不失的數據該使用什麼存儲器用FlashEEPROM或者其他的,謝謝
flash,容量大,價格低,速度慢,擦寫次數一般在1萬次以上
eeprom,容量小,價格低,速度一般,擦寫次數一般在10萬次以上
鐵電,容量小,價格高,速度高,擦寫次數可認為是無限次
H. 單片機用的模塊是什麼啊,比如通訊模塊是什麼
232,485和USB。其本身自帶的有PCI、SPI、I^2C。
I. 單片機 eeprom是什麼功能數據存儲程序存儲器求簡介跪求解釋,一定採納
單片機 eeprom是什麼功能?
單片機的EEPROM就是一個存儲用戶數據的單元,用於保存掉電不允許丟失的數據,通常使用IAP對其進行數據的讀寫和存儲。