pic單片機教程之數據存儲器的直接間接尋址方式
數據存儲器構成
本文引用地址:http://www.104case.com/article/201609/303284.htm數據存儲器由特殊功能寄存器(SFR)和通用寄存器(GPR)組成。SFR控制器件的操作,而GPR則是數據存儲和改寫的通用區域。
SFR和GPR數據存儲區分成不同的存儲區。GPR區分成不同的存儲區,以實現對超過96字節的通用RAM的尋址。SFR是用來控制外設和內核功能的寄存器。STATUS寄存器的存儲區選擇控制位(STATUS7:5>)用于選擇存儲區。圖6-5是數據存儲器的構成映射,這個映射與器件型號有關。
從一個寄存器向另一個寄存器傳送數據時,必須通過W寄存器。這意味著所有寄存器之間的數據傳送,都需要兩個指令周期。
整個數據存儲器可以采用直接尋址或間接尋址來存取。直接尋址可能需要使用RP1、RP0位,間接尋址需要用到指針寄存器(FSR)。間接尋址數據存儲器的存儲區0/存儲區1或存儲區2/存儲區3時,要使用狀態寄存器的間接寄存器指針(IRP)位。
通用寄存器(GPR)
某些中檔單片機的GPR區分成不同的存儲區,上電復位并不能初始化GPR,其它的復位也不能改變GPR的值。
寄存器既可以直接尋址,也可以使用指針寄存器FSR間接尋址。某些器件具有各數據存儲區共享的公用數據存儲區,對公用數據存儲區的讀寫不必考慮當前所在存儲區,可使用同一個地址單元(值),我們稱這個區域為公用RAM。
特殊功能寄存器(SFR)
特殊功能寄存器由CPU和外設使用,用于控制器件的操作,這類寄存器實現為靜態RAM形式。特殊功能寄存器可分為兩類,一類與內核功能有關,另一類與外設功能有關。本章將講述與內核功能有關的特殊功能寄存器,另一類與外設功能操作有關的特殊功能寄存器將在相應的外設功能模塊章節中講述。
所有中檔單片機的SFR寄存器區也分成不同的存儲區。在這些存儲區間切換時,需要設置狀態(STATUS )寄存器的RP0、RP1位來選擇所需存儲區。某些SFR寄存器會被上電復位和其它復位初始化,而有些一些SFR寄存器在復位時不會被初始化。
*注: 可能有通用寄存器映射到特殊功能寄存器區。
寄存器既可以直接尋址,也可以通過指針寄存器間接尋址。
存儲區劃分
數據存儲器分為4個存儲區,每個存儲區包括特殊功能寄存器和通用寄存器。使用直接尋址時,為在這些存儲區之間切換,需要設置狀態寄存器的RP0、RP1位以選擇需要的存儲區。狀態寄存器的IRP位用于間接尋址。

每個存儲區最多可有128字節(7FH)。特殊功能寄存器安排在存儲區的低地址單元;通用寄存器安排在高地址單元。所有數據存儲器都是用靜態RAM。所有存儲區都包括特殊功能寄存器。為了減少程序代碼和提高存取速度,存儲區0中某些使用率高的特殊功能寄存器映射在其它存儲區中。
隨著產品的發展,其數據存儲器的設計布局有一些變化。對于所有新器件來說,標準的數據存儲器構成如圖6-5所示。在這個存儲器映射中,所有存儲區的最后16字節都映射到存儲區0中,這可以降低用于現場切換的軟件開銷。用粗體表示的寄存器存在于每種單片機中,其它寄存器的有無與外設模塊有關。圖中沒有示出所有的外設寄存器,因為針對不同的器件,在某些文件地址處的寄存器定義與這里所顯示的不同。除了使用本手冊所提供的所有圖、表和說明外,也應參閱特定器件的數據手冊來核實細節。


評論