如果在变量的定义中,没有包括存储器类型,将自动选用默认或暗示的存储器类型。暗示的存储器类型适用于所有的全局变量和静态变量,还有不能分配在寄存器中的函数参数和局部变量。默认的存储器类型由编译器的参数SMALL、COMPACT及LARGE决定。这些参数定义了编译时使用的存储器模式。
·小型模式(SMALL):所有变量都默认在51单片机的内部数据存储器中。这和用data显式定义变量起到相同的作用。在此模式下,变量访问是非常快速的。然而,所有数据对象,包括堆栈都必须放在内部RAM中。堆栈空间面临溢出,因为堆栈占用多少空间依赖于各个子程序的调用嵌套深度。在典型应用中,如果具有代码分段功能的BL51连接/定位器被配置成覆盖内部数据存储器中的变量时,SMALL模式是最好的选择。
·精简模式(COMPACT):此模式中,所有变量都默认在8051的外部数据存储器的一页中。地址的高字节往往通过P2输出。其值必须由用户在启动代码中设置,编译器不会为用户设置。这和用pdata显式定义变量起到相同的作用。此模式最多只能提供256B的变量。这种模式不如SMALL模式高效,所以变量的访问不够快,不过它比LARGE模式要快。
·大模式(LARGE):在大模式下,所有的变量都默认在外部存储器中(xdata)。这和用xdata显式定义变量起到相同的作用。数据指针(DPTR)用来寻址,通过DPTR进行存储器访问的效率很低,特别是在对一个大于一个字节的变量进行操作时尤为明显。此数据访问类型比SMALL和COMPACT模式需要更多的代码。
在μVision 3里,要设置存储器模式,需要打开如图3-1所示的界面,在“Memory Model”字段中设置。(www.xing528.com)
图3-1 “Target”选项卡
注意:未指定“存储器类型”的变量,按以上三种存储器模式分配存储空间。若指定变量的存储器类型,则与存储器模式无关。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。