新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)基礎(chǔ)(5)

51單片機(jī)基礎(chǔ)(5)

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
1、對(duì)程序員來(lái)講,最基本的51單片機(jī)具有如下3個(gè)存儲(chǔ)空間:

(1)內(nèi)部數(shù)據(jù)空間,地址范圍0~255,使用MOV指令和8位地址進(jìn)行直接和間接訪問(wèn),當(dāng)然也有更多的操作類(lèi)指令如ANL、ADD等可以直接或間接地訪問(wèn)該空間;

本文引用地址:http://butianyuan.cn/article/201611/321799.htm

(2)外部數(shù)據(jù)空間,地址范圍0~65535,(僅可)使用MOVX指令配合存于DPTR中的16位地址或存于R0、R1中的(低)8位地址進(jìn)行寄存器間接方式的讀寫(xiě)訪問(wèn);使用8位地址訪問(wèn)外部數(shù)據(jù)空間實(shí)際是默認(rèn)更高位的地址須由其它輸出口線事先指定或?qū)嶋H配置的外部數(shù)據(jù)存儲(chǔ)器不超過(guò)256字節(jié)而沒(méi)有更高位的地址線需要給定;

(3)程序存儲(chǔ)空間,地址范圍0~65535,(僅可)使用MOVC指令配合作為基地址的存于DPTR中的16位地址或當(dāng)前PC中的16位地址和事先傳送到累加器A中的8位變地址進(jìn)行基址變址方式的只讀訪問(wèn);

2、內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器的區(qū)分不在于數(shù)據(jù)存儲(chǔ)器位于單片機(jī)內(nèi)部或外部,而是在于數(shù)據(jù)存儲(chǔ)器與CPU的緊密程度,或者說(shuō)CPU訪問(wèn)它們的方便程度。

(1)實(shí)際上51的內(nèi)部數(shù)據(jù)存儲(chǔ)器與CPU結(jié)合非常緊密,甚至位于內(nèi)部數(shù)據(jù)空間的ACC、PSW乃至其它SFR其實(shí)可以認(rèn)為就是CPU的一部分,如此就可以說(shuō)內(nèi)部數(shù)據(jù)存儲(chǔ)器就是位于CPU內(nèi)部的數(shù)據(jù)存儲(chǔ)器;由于各種指令直接或間接尋址的支持,CPU對(duì)位于內(nèi)部數(shù)據(jù)空間的數(shù)據(jù)存儲(chǔ)器的訪問(wèn)是非常方便的,而外部數(shù)據(jù)空間的數(shù)據(jù)存儲(chǔ)器可稱(chēng)為外部RAM(或記為XRAM),就是特別指明需要用MOVX指令間接尋址才能訪問(wèn)的數(shù)據(jù)存儲(chǔ)器。

(2)內(nèi)部數(shù)據(jù)存儲(chǔ)器一定是位于51單片機(jī)內(nèi)部的,而外部數(shù)據(jù)存儲(chǔ)器則不能說(shuō)一定就位于單片機(jī)的外部。為了應(yīng)用方便(節(jié)省I/O口線,避免通過(guò)外部總線擴(kuò)展XRAM的麻煩,以及節(jié)省物理空間等),很多增強(qiáng)的51系列單片機(jī)都將一定量的XRAM集成到芯片的內(nèi)部,即便如此,這些數(shù)據(jù)存儲(chǔ)器使用的是外部數(shù)據(jù)空間,因此仍然(也只能)是外部數(shù)據(jù)存儲(chǔ)器。

3、最基本51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)空間可進(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),稱(chēng)為4個(gè)寄存器組(依次稱(chēng)為寄存器組0、1、2和3),每組8個(gè)字節(jié)分別命名為寄存器R0、R1、...、R7,可通過(guò)PSW寄存器中的RS1、RS0位組合(即PSW.4和PSW.3)選擇其中一組為當(dāng)前寄存器組。當(dāng)前寄存器組中的寄存器R0~R7可在51單片機(jī)的匯編指令中以直接引用的方式非常方便地進(jìn)行讀寫(xiě)訪問(wèn)(例如MOV A,R1),而對(duì)非當(dāng)前寄存器組中的寄存器則可按一般內(nèi)部RAM單元使用8位內(nèi)部RAM地址進(jìn)行直接和間接訪問(wèn)。寄存器組區(qū)的所有32字節(jié)也都可以作為一般內(nèi)部RAM單元訪問(wèn)和使用。51單片機(jī)指令系統(tǒng)中除了累加器A以外,可直接引用的當(dāng)前寄存器R0~R7是最為高效方便的了。

(2)51單片機(jī)有一整套位操作指令,可以通過(guò)8位位地址對(duì)位于內(nèi)部數(shù)據(jù)空間的256個(gè)二進(jìn)制位進(jìn)行直接訪問(wèn),可以認(rèn)為這是一個(gè)通過(guò)8位位地址訪問(wèn)的位地址空間。片內(nèi)RAM地址32~47上的16個(gè)字節(jié)共有128個(gè)二進(jìn)制位,占據(jù)了前述256位地址空間中的前半部分(位地址0~127),因此稱(chēng)這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訪問(wèn)功能部件的通道和手段。其中除了A、B、PSW、SP和DPTR等CPU自身的部分以外,其余都是在片設(shè)備和端口的訪問(wèn)窗口,CPU通過(guò)這些窗口對(duì)其進(jìn)行配置和應(yīng)用。后繼的各種不同的51單片機(jī)如果增加了更多的在片設(shè)備和接口,最終都要通過(guò)在SFR區(qū)設(shè)計(jì)安放更多的特殊功能寄存器來(lái)體現(xiàn)給CPU。那些所在地址能被8整除的特殊功能寄存器,它們的每個(gè)位都是具有位地址的,因此也是可以按位訪問(wèn)的。每個(gè)位的位地址就等于其所在特殊功能寄存器的地址加上該位的位序號(hào)(例如PSW的內(nèi)部RAM字節(jié)地址是0D0H,該地址能夠被8整除,所以PSW的每一位都分配有位地址,而CY是PSW的最高第7位,則CY的位地址就是0D0H+7=0D7H)。位地址空間的后半部分都是這樣分配給特殊功能寄存器的功能位的,那些最需要按位訪問(wèn)的特殊功能寄存器都分配在可以具有位地址的字節(jié)地址上。

(5)基本51單片機(jī)只有128字節(jié)的內(nèi)部RAM,可使用字節(jié)地址0~127進(jìn)行直接或間接訪問(wèn),而52單片機(jī)則有256字節(jié)的內(nèi)部RAM。增加的128字節(jié)RAM只能使用字節(jié)地址128~255進(jìn)行間接訪問(wèn),并且事先規(guī)定特殊功能寄存器只能通過(guò)字節(jié)地址或位地址進(jìn)行直接訪問(wèn),通過(guò)這種辦法規(guī)避了與SFR所占地址空間的沖突。由于堆棧操作本身就是根據(jù)SP的值對(duì)內(nèi)部RAM單元進(jìn)行的間接訪問(wèn),因此增加的128字節(jié)高地址RAM可以用作堆棧區(qū)段。

4、[“關(guān)于通過(guò)#EA引腳選擇的片內(nèi)/片外程序存儲(chǔ)空間”待續(xù)...]



關(guān)鍵詞: 51單片機(jī)基

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉