pic單片機(jī)教程之?dāng)?shù)據(jù)存儲器的直接間接尋址方式
數(shù)據(jù)存儲器構(gòu)成
本文引用地址:http://m.butianyuan.cn/article/201609/303284.htm數(shù)據(jù)存儲器由特殊功能寄存器(SFR)和通用寄存器(GPR)組成。SFR控制器件的操作,而GPR則是數(shù)據(jù)存儲和改寫的通用區(qū)域。
SFR和GPR數(shù)據(jù)存儲區(qū)分成不同的存儲區(qū)。GPR區(qū)分成不同的存儲區(qū),以實現(xiàn)對超過96字節(jié)的通用RAM的尋址。SFR是用來控制外設(shè)和內(nèi)核功能的寄存器。STATUS寄存器的存儲區(qū)選擇控制位(STATUS7:5>)用于選擇存儲區(qū)。圖6-5是數(shù)據(jù)存儲器的構(gòu)成映射,這個映射與器件型號有關(guān)。
從一個寄存器向另一個寄存器傳送數(shù)據(jù)時,必須通過W寄存器。這意味著所有寄存器之間的數(shù)據(jù)傳送,都需要兩個指令周期。
整個數(shù)據(jù)存儲器可以采用直接尋址或間接尋址來存取。直接尋址可能需要使用RP1、RP0位,間接尋址需要用到指針寄存器(FSR)。間接尋址數(shù)據(jù)存儲器的存儲區(qū)0/存儲區(qū)1或存儲區(qū)2/存儲區(qū)3時,要使用狀態(tài)寄存器的間接寄存器指針(IRP)位。
通用寄存器(GPR)
某些中檔單片機(jī)的GPR區(qū)分成不同的存儲區(qū),上電復(fù)位并不能初始化GPR,其它的復(fù)位也不能改變GPR的值。
寄存器既可以直接尋址,也可以使用指針寄存器FSR間接尋址。某些器件具有各數(shù)據(jù)存儲區(qū)共享的公用數(shù)據(jù)存儲區(qū),對公用數(shù)據(jù)存儲區(qū)的讀寫不必考慮當(dāng)前所在存儲區(qū),可使用同一個地址單元(值),我們稱這個區(qū)域為公用RAM。
特殊功能寄存器(SFR)
特殊功能寄存器由CPU和外設(shè)使用,用于控制器件的操作,這類寄存器實現(xiàn)為靜態(tài)RAM形式。特殊功能寄存器可分為兩類,一類與內(nèi)核功能有關(guān),另一類與外設(shè)功能有關(guān)。本章將講述與內(nèi)核功能有關(guān)的特殊功能寄存器,另一類與外設(shè)功能操作有關(guān)的特殊功能寄存器將在相應(yīng)的外設(shè)功能模塊章節(jié)中講述。
所有中檔單片機(jī)的SFR寄存器區(qū)也分成不同的存儲區(qū)。在這些存儲區(qū)間切換時,需要設(shè)置狀態(tài)(STATUS )寄存器的RP0、RP1位來選擇所需存儲區(qū)。某些SFR寄存器會被上電復(fù)位和其它復(fù)位初始化,而有些一些SFR寄存器在復(fù)位時不會被初始化。
*注: 可能有通用寄存器映射到特殊功能寄存器區(qū)。
寄存器既可以直接尋址,也可以通過指針寄存器間接尋址。
存儲區(qū)劃分
數(shù)據(jù)存儲器分為4個存儲區(qū),每個存儲區(qū)包括特殊功能寄存器和通用寄存器。使用直接尋址時,為在這些存儲區(qū)之間切換,需要設(shè)置狀態(tài)寄存器的RP0、RP1位以選擇需要的存儲區(qū)。狀態(tài)寄存器的IRP位用于間接尋址。
每個存儲區(qū)最多可有128字節(jié)(7FH)。特殊功能寄存器安排在存儲區(qū)的低地址單元;通用寄存器安排在高地址單元。所有數(shù)據(jù)存儲器都是用靜態(tài)RAM。所有存儲區(qū)都包括特殊功能寄存器。為了減少程序代碼和提高存取速度,存儲區(qū)0中某些使用率高的特殊功能寄存器映射在其它存儲區(qū)中。
隨著產(chǎn)品的發(fā)展,其數(shù)據(jù)存儲器的設(shè)計布局有一些變化。對于所有新器件來說,標(biāo)準(zhǔn)的數(shù)據(jù)存儲器構(gòu)成如圖6-5所示。在這個存儲器映射中,所有存儲區(qū)的最后16字節(jié)都映射到存儲區(qū)0中,這可以降低用于現(xiàn)場切換的軟件開銷。用粗體表示的寄存器存在于每種單片機(jī)中,其它寄存器的有無與外設(shè)模塊有關(guān)。圖中沒有示出所有的外設(shè)寄存器,因為針對不同的器件,在某些文件地址處的寄存器定義與這里所顯示的不同。除了使用本手冊所提供的所有圖、表和說明外,也應(yīng)參閱特定器件的數(shù)據(jù)手冊來核實細(xì)節(jié)。
評論