7.4 C51变量的存储模式

存储模式是指编译环境中默认的变量的存储类型。一般来说,如果在定义变量时默认存储类型,编译系统将按照存储模式所规定的默认存储区来指定变量、函数参数等的存储区域。KeilµVision3编译系统支持的8051系列单片机存储模式有Small模式、Compact模式和Large模式3种。

存储模式一般是在C51编译器选项中进行选择,也可以在程序中指定。在KeilµVision3编译系统中存储器模式的选择如图7.1所示,用户可以在“Memory Model”下拉列表中选择默认的存储模式。

在程序中也可以指定存储模式,只要在函数名后、函数体前加上具体模式名即可,示例如下。


void fun1(void)small{}


该语句用于声明无值函数fun1,用small说明函数内部变量全部保存在内部RAM。对于一些使用频率较大和耗时长的程序段可以作这样的声明,以便于提高程序运行速度。下面分别介绍这3种存储模式。

7.4 C51变量的存储模式 - 图1

图 7.1 KeilµVision3中存储器模式的选择

7.4.1 Small模式

Small模式用于将所有未指明存储区的变量均保存在单片机内部数据存储器,即片内RAM中。该模式与采用data存储类型方式相同。采用Small模式的优点是访问速度快、效率高,缺点是由于片内RAM存储空间有限,需要节约使用存储空间,因此Small模式只适用于规模较小的程序。

由于内部数据存储器也可以存放堆栈,但是所有存放的数据和堆栈的大小都必须适合。尤其是堆栈,堆栈空间的大小是由函数的嵌套深度所决定的。通常如果连接/定位器将变量都设置在片内RAM中时,采用Small模式是最适合的。