首页 理论教育 HCS08单片机存储空间分配实践

HCS08单片机存储空间分配实践

时间:2023-11-19 理论教育 版权反馈
【摘要】:HCS08单片机的RAM、Flash存储器和模块寄存器都有相同的分配结构,共处于一个线性的统一编址的16位寻址空间内,即模块寄存器、RAM、Flash占用同一0x0000~0xFFFF存储空间的不同范围,分段使用其存储器,MC9S08AC16系列内存映像结构图如图2-6所示。为了能正确、有效使用单片机存储空间,下面就详细介绍其存储空间的分配。上图描述了MC9S08AC16系列MCU的存储映像,MC9S08AC16的片上存储器由RAM、非易失的Flash存储器、输入/输出(I/O)和控制/状态寄存器组成,这些寄存器可分成4块。

HCS08单片机存储空间分配实践

HCS08单片机的RAM、Flash存储器和模块寄存器都有相同的分配结构,共处于一个线性的统一编址的16位(总共64KB)寻址空间内,即模块寄存器、RAM、Flash占用同一0x0000~0xFFFF存储空间的不同范围,分段使用其存储器,MC9S08AC16系列内存映像结构图如图2-6所示。S08单片机的程序存储器、数据存储器和I/O外设模块也在上述空间内;内部集成外设(例如通用I/O模块、串行通信SPI模块等)的管理接口(即相应的寄存器)也要占用地址空间,因此用户实际可用的程序和数据空间不足64KB。为了能正确、有效使用单片机存储空间,下面就详细介绍其存储空间的分配。

上图描述了MC9S08AC16系列MCU的存储映像,MC9S08AC16的片上存储器由RAM、非易失的Flash存储器、输入/输出(I/O)和控制/状态寄存器组成,这些寄存器可分成4块。

1.直接页寄存器(0x00000x006F)

直接页寄存器空间分布着MCU片内外围模块如I/O端口、ADC、IRQ、键盘、定时计数器、SCI及IIC等模块的控制和状态寄存器,CPU通过对这些地址空间的访问实现对片内外围模块的操作。

2.用户RAM空间(0x0070~0x046F)

用户RAM空间用于存放用户程序中的各种变量数据,片内用户RAM只有1024B。存储器直接页(0x00~0xFF)的前112B的RAM(0x00~0x6F)用于模块寄存器,还有144B(0x70~0xFF)可用于用户RAM。这一页是可以直接寻址的,可以用于存放程序中频繁使用的全局变量,是一个非常宝贵的RAM区段。但要注意到,系统堆栈指针SP的复位默认值为0x00FF,且入栈时向地址减量方向生长,也就是说,堆栈默认定位在直接页存储空间,占据了部分可直接寻址的用户RAM区。为了把直接页RAM空间留给程序变量,用户程序可在复位初始化时,通过设置SP,把堆栈定位到RAM区,例如,可以使SP指向0x086F,从而把直接页剩下的144B全部留给用户程序变量使用。

978-7-111-50417-7-Chapter02-10.jpg(www.xing528.com)

图2-6 MC9S08AC16系列内存映像结构图

3.高地址页寄存器(0x1800~0x185F)

分布在此空间的寄存器有:系统复位状态寄存器SRS、系统背景调试强制复位寄存器SBDFR、系统选项寄存器SOPT、系统MCLK控制寄存器SMCLK、系统设备鉴别寄存器SDID、系统实时中断状态和控制寄存器SRTISC、系统电源管理状态和控制寄存器SPMSC、片上调试模块寄存器、Flash模块寄存器和I/O端口控制寄存器等。高页寄存器较少使用,因此它们分布在可直接页寻址的存储空间外,从地址0x1800开始到0x185F,共96B。

4.Flash存储区域(0xC000~0xFFFF)

该区域可分为3部分:用户Flash区(0xC000~0xFFAF)、非易失性寄存器区(0xFFB0~0xFFBF)和中断矢量区(0xFFBC0~0xFFFF)。用户Flash空间可用于存储用户程序代码和常数、表格等。非易失性寄存器区包括一个8B的后门键值,一个8位的Flash保护寄存器NVPROT,一个8位的Flash选项寄存器NVOPT。这几个寄存器对于用户程序都是只读的,改写它们可以通过改变程序代码,然后重新写入目标代码到Flash来完成。中断矢量区间用于存放中断向量表,其中最后两个字节0xFFFE与0xFFFF中放置复位向量地址。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈