1、對程序員來講,最基本的51單片機(jī)具有如下3個(gè)存儲空間:(1)內(nèi)部數(shù)據(jù)空間,地址范圍0~255,使用MOV指令和8位地址進(jìn)行直接和間接訪問,當(dāng)然也有更多的操作類指令如ANL、ADD等可以直接或間接地訪問該空間;
本文引用地址:http://m.butianyuan.cn/article/201611/321799.htm(2)外部數(shù)據(jù)空間,地址范圍0~65535,(僅可)使用MOVX指令配合存于DPTR中的16位地址或存于R0、R1中的(低)8位地址進(jìn)行寄存器間接方式的讀寫訪問;使用8位地址訪問外部數(shù)據(jù)空間實(shí)際是默認(rèn)更高位的地址須由其它輸出口線事先指定或?qū)嶋H配置的外部數(shù)據(jù)存儲器不超過256字節(jié)而沒有更高位的地址線需要給定;
(3)程序存儲空間,地址范圍0~65535,(僅可)使用MOVC指令配合作為基地址的存于DPTR中的16位地址或當(dāng)前PC中的16位地址和事先傳送到累加器A中的8位變地址進(jìn)行基址變址方式的只讀訪問;
2、內(nèi)部和外部數(shù)據(jù)存儲器的區(qū)分不在于數(shù)據(jù)存儲器位于單片機(jī)內(nèi)部或外部,而是在于數(shù)據(jù)存儲器與CPU的緊密程度,或者說CPU訪問它們的方便程度。
(1)實(shí)際上51的內(nèi)部數(shù)據(jù)存儲器與CPU結(jié)合非常緊密,甚至位于內(nèi)部數(shù)據(jù)空間的ACC、PSW乃至其它SFR其實(shí)可以認(rèn)為就是CPU的一部分,如此就可以說內(nèi)部數(shù)據(jù)存儲器就是位于CPU內(nèi)部的數(shù)據(jù)存儲器;由于各種指令直接或間接尋址的支持,CPU對位于內(nèi)部數(shù)據(jù)空間的數(shù)據(jù)存儲器的訪問是非常方便的,而外部數(shù)據(jù)空間的數(shù)據(jù)存儲器可稱為外部RAM(或記為XRAM),就是特別指明需要用MOVX指令間接尋址才能訪問的數(shù)據(jù)存儲器。
(2)內(nèi)部數(shù)據(jù)存儲器一定是位于51單片機(jī)內(nèi)部的,而外部數(shù)據(jù)存儲器則不能說一定就位于單片機(jī)的外部。為了應(yīng)用方便(節(jié)省I/O口線,避免通過外部總線擴(kuò)展XRAM的麻煩,以及節(jié)省物理空間等),很多增強(qiáng)的51系列單片機(jī)都將一定量的XRAM集成到芯片的內(nèi)部,即便如此,這些數(shù)據(jù)存儲器使用的是外部數(shù)據(jù)空間,因此仍然(也只能)是外部數(shù)據(jù)存儲器。
3、最基本51單片機(jī)的內(nèi)部數(shù)據(jù)存儲空間可進(jìn)一步劃分為寄存器組區(qū)(地址0~31,共32字節(jié))、位尋址區(qū)(地址32~47,共16字節(jié))、用戶RAM區(qū)(地址48~127,共80字節(jié))和SFR區(qū)(地址128~255,共128字節(jié))等4個(gè)功能區(qū);
(1)寄存器組區(qū)的32字節(jié)內(nèi)部RAM分為4組(地址0~7、8~15、16~23、24~31),稱為4個(gè)寄存器組(依次稱為寄存器組0、1、2和3),每組8個(gè)字節(jié)分別命名為寄存器R0、R1、...、R7,可通過PSW寄存器中的RS1、RS0位組合(即PSW.4和PSW.3)選擇其中一組為當(dāng)前寄存器組。當(dāng)前寄存器組中的寄存器R0~R7可在51單片機(jī)的匯編指令中以直接引用的方式非常方便地進(jìn)行讀寫訪問(例如MOV A,R1),而對非當(dāng)前寄存器組中的寄存器則可按一般內(nèi)部RAM單元使用8位內(nèi)部RAM地址進(jìn)行直接和間接訪問。寄存器組區(qū)的所有32字節(jié)也都可以作為一般內(nèi)部RAM單元訪問和使用。51單片機(jī)指令系統(tǒng)中除了累加器A以外,可直接引用的當(dāng)前寄存器R0~R7是最為高效方便的了。
(2)51單片機(jī)有一整套位操作指令,可以通過8位位地址對位于內(nèi)部數(shù)據(jù)空間的256個(gè)二進(jìn)制位進(jìn)行直接訪問,可以認(rèn)為這是一個(gè)通過8位位地址訪問的位地址空間。片內(nèi)RAM地址32~47上的16個(gè)字節(jié)共有128個(gè)二進(jìn)制位,占據(jù)了前述256位地址空間中的前半部分(位地址0~127),因此稱這16個(gè)字節(jié)所在的片內(nèi)RAM區(qū)為位尋址區(qū),它們即可以按字節(jié)尋址,其中的每一位也可以按位尋址。
(3)內(nèi)部RAM中剩余的部分可用于一般的數(shù)據(jù)暫存或設(shè)置為堆棧區(qū)段。
(4)特殊功能寄存器(SFR)區(qū)總計(jì)有128字節(jié)的空間,其中離散地分布著最基本51單片機(jī)的21個(gè)特殊功能寄存器。這些特殊功能寄存器實(shí)際上是單片機(jī)功能部件在內(nèi)存中的映像,是CPU訪問功能部件的通道和手段。其中除了A、B、PSW、SP和DPTR等CPU自身的部分以外,其余都是在片設(shè)備和端口的訪問窗口,CPU通過這些窗口對其進(jìn)行配置和應(yīng)用。后繼的各種不同的51單片機(jī)如果增加了更多的在片設(shè)備和接口,最終都要通過在SFR區(qū)設(shè)計(jì)安放更多的特殊功能寄存器來體現(xiàn)給CPU。那些所在地址能被8整除的特殊功能寄存器,它們的每個(gè)位都是具有位地址的,因此也是可以按位訪問的。每個(gè)位的位地址就等于其所在特殊功能寄存器的地址加上該位的位序號(例如PSW的內(nèi)部RAM字節(jié)地址是0D0H,該地址能夠被8整除,所以PSW的每一位都分配有位地址,而CY是PSW的最高第7位,則CY的位地址就是0D0H+7=0D7H)。位地址空間的后半部分都是這樣分配給特殊功能寄存器的功能位的,那些最需要按位訪問的特殊功能寄存器都分配在可以具有位地址的字節(jié)地址上。
(5)基本51單片機(jī)只有128字節(jié)的內(nèi)部RAM,可使用字節(jié)地址0~127進(jìn)行直接或間接訪問,而52單片機(jī)則有256字節(jié)的內(nèi)部RAM。增加的128字節(jié)RAM只能使用字節(jié)地址128~255進(jìn)行間接訪問,并且事先規(guī)定特殊功能寄存器只能通過字節(jié)地址或位地址進(jìn)行直接訪問,通過這種辦法規(guī)避了與SFR所占地址空間的沖突。由于堆棧操作本身就是根據(jù)SP的值對內(nèi)部RAM單元進(jìn)行的間接訪問,因此增加的128字節(jié)高地址RAM可以用作堆棧區(qū)段。
4、[“關(guān)于通過#EA引腳選擇的片內(nèi)/片外程序存儲空間”待續(xù)...]
評論