pic单片机教程之数据存储器的直接间接寻址方式
扫描二维码
随时随地手机看文章
数据存储器构成
数据存储器由特殊功能寄存器(SFR)和通用寄存器(GPR)组成。SFR控制器件的操作,而GPR则是数据存储和改写的通用区域。
SFR和GPR数据存储区分成不同的存储区。GPR区分成不同的存储区,以实现对超过96字节的通用RAM的寻址。SFR是用来控制外设和内核功能的寄存器。STATUS寄存器的存储区选择控制位(STATUS<7: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中,这可以降低用于现场切换的软件开销。用粗体表示的寄存器存在于每种单片机中,其它寄存器的有无与外设模块有关。图中没有示出所有的外设寄存器,因为针对不同的器件,在某些文件地址处的寄存器定义与这里所显示的不同。除了使用本手册所提供的所有图、表和说明外,也应参阅特定器件的数据手册来核实细节。