對(duì)單片機(jī)存儲(chǔ)分配新的認(rèn)識(shí)
一、存儲(chǔ)器結(jié)構(gòu)
51單片機(jī)存儲(chǔ)器采用的是哈佛結(jié)構(gòu),即是程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間分開,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器各自有自己的尋址方式、尋址空間和控制系統(tǒng)。
51存儲(chǔ)器可以分為
程序存儲(chǔ)器ROM:用于存放程序和表格之類的固定常識(shí)。C51編程中用code關(guān)鍵詞聲明。
內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM:51子系列有128字節(jié)RAM,52子系列有256字節(jié)RAM
特殊功能寄存器SFR:80H-FFH字節(jié)地址的RAM
位地址空間:片內(nèi)RAM0x20-0x2f空間,本空間允許按位或者字節(jié)尋址??捎胋data進(jìn)行聲明。
外部數(shù)據(jù)寄存器RAM:片外的RAM,最大尋址空間2^16即是64K大RAM。Pdata用于聲明片外第一頁(yè)RAM空間為0-255;xdata用于聲明外部RAM空間為0-65535.
內(nèi)部可直接尋址RAM結(jié)構(gòu)圖
此外data用于片內(nèi)直接尋址RAM空間0-127;idata用于片內(nèi)間接尋址RAM空間0-255。
二、C51增加的修飾符說明
C51變量聲明方式:
存儲(chǔ)類說明符 類型說明符 修飾符 標(biāo)識(shí)符;
例如:static unsigned char idata temp;
存儲(chǔ)類說明符:包括auto、extern、static、register;
符號(hào)說明符:包括unsigned char、char、unsigned int、int、long、unsigned long、float、bit、sfr、sft16、sbit;
修飾符:包括data、idata、pdata、xdata、bdata、code;
此外,在編譯C51源程序時(shí)可選用三種存儲(chǔ)模式之一:即小模式(small)、緊湊模式(compact)、大模式(large)。三種模式的ROM空間相同,而三種模式的默認(rèn)RAM空間:對(duì)small模式來說,就是片上RAM的所用空間data和idata;對(duì)compact模式來說,是片外pdata空間;large模式,為片外xdata空間;
以上就是對(duì)這幾天對(duì)8051的重新認(rèn)識(shí),當(dāng)然不是很全面。在此之前,一直對(duì)其存儲(chǔ)結(jié)構(gòu)不是太明了?,F(xiàn)在多少有一些許了解了,很是興奮。另外,現(xiàn)在市場(chǎng)上的51內(nèi)核芯片與之前傳統(tǒng)的還是有些許不同的,具體不同之處就需要認(rèn)真讀讀供應(yīng)商的文檔資料了。舉個(gè)例子來說,STC的89c51系列單片機(jī),其ROM空間可以根據(jù)信號(hào)來判別,其RAM最小的型號(hào)89C51,就有256字節(jié)內(nèi)部RAM和擴(kuò)展的256字節(jié)外部RAM,其內(nèi)部還有4K的EEPROM。