`
fanjava
  • 浏览: 235829 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

在C51中变量的空间分配几个方法

阅读更多
1、 data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。

2、 data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;

3、 确保你的程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。

4、 程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、 其他不频繁用到和对运算速度要求不高的变量都放到xdata区。

6、 如果想节省data空间就必须用large模式,将未定义内存位置的变量全放到xdata区。当然最好对所有变量都要指定内存类型。

7、 当使用到指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。如指针p是指向data区,则应定义为: char data *p;。还可指定指针本身的存放内存类型,如:char data * xdata p;。其含义是指针p指向data区变量,而其本身存放在xdata区。
分享到:
评论

相关推荐

    C51中变量的空间分配几个方法

    ### C51中变量的空间分配方法详解 #### 一、引言 在嵌入式开发领域,特别是针对资源有限的微控制器(如51系列单片机)编程时,合理地管理内存对于优化程序性能至关重要。C51是一种专门为51系列单片机设计的编程...

    C51中指针的定义和存储.docx

    在C51中,一个完整的指针定义通常包括以下几个部分: 1. **被指变量的数据类型**:即指针所指向的变量的数据类型,比如`char`、`int`等。 2. **被指变量的存储类型**:指明了被指变量所在的内存区域,例如`data`、`...

    C51的多任务程序

    在C51中实现多任务还需要注意以下几点: 1. **任务同步与通信**:任务之间可能需要交换数据或同步执行,可以使用共享变量、邮箱、信号量等机制。在中断服务程序中修改共享数据时,应确保正确地使用锁机制,防止数据...

    c51使用的注意事项

    在使用C51编程时,有几个重要的注意事项需要了解: 1) **避免绝对定位**:C51编译器会自动处理变量的内存分配,因此不应像汇编语言那样使用`_at_`关键字进行绝对定位。通过声明变量类型(如`data`、`xdata`等)和...

    C51指针定义

    这种声明方式存在逻辑上的错误,因为它试图在片外RAM中分配一个指向`xdata`区的指针变量,导致编译器无法正确处理。 5. **`uchar *dataptr;`** 当缺少指针的存储类型声明时,默认情况下,指针将被分配在片内RAM...

    C51使用技巧及实战(C语言版)【周立功】.rar

    3. **内存管理**:探讨C51中的存储区分配,如内部RAM、外部RAM、寄存器等,以及如何有效地管理这些内存空间。 4. **中断系统**:详细介绍C51中断的使用,包括中断向量、中断优先级、中断服务函数等,中断处理是实时...

    C51 函数指针与再入函数

    函数指针是 C 语言中几个难点之一。由于 8051 的 C 编译器的独特要求,函数指针和再入函数有更多的挑战需要克服。主要由于函数变量的传递。典型的(绝大部分 8051 芯片)函数变量通过堆栈的入栈和出栈命令来传递。...

    C51单片机编程基本知识

    C51编程的过程通常包括以下几个步骤: 1. **源代码编辑**:使用文本编辑器或者IDE(如Keil uVision)编写C51源代码。 2. **预处理**:预处理器负责处理包含文件(`#include`)、宏定义(`#define`)等指令。 3. **...

    C51MTK编译环境

    在这个编译环境中,开发者可以轻松地进行源码编辑、编译、链接以及调试等一系列软件开发流程。使用C51MTK编译环境,开发者无需关注底层编译工具链的配置,只需专注于应用程序的编写,大大提高了开发效率。 MTK平台...

    C51FPS单片机浮点运算库

    3. **内存管理**:浮点数的存储需要更多的内存空间,开发者需要考虑单片机的RAM和ROM资源,合理安排数据结构和变量分配。 4. **误差处理**:由于是近似计算,可能存在舍入误差。开发者需要了解并处理这些误差,特别...

    c51的keil开发软件

    在实际开发过程中,C51 Keil可以做到以下几点: - **代码编写**:μVision IDE提供了一个功能丰富的文本编辑器,支持语法高亮、自动完成等功能,提高编码效率。 - **项目管理**:用户可以创建和管理多个源文件,设置...

    C51源程序集锦C51源程序集锦

    9. **优化技巧**:讨论如何优化C51代码以减少存储空间占用和提高执行效率,这在资源有限的嵌入式系统中尤为重要。 通过深入研究这些C51源程序集锦,开发者不仅可以掌握C51语言的基本语法,还能了解到如何针对8051微...

    c51基本资料、对于初学者是一个很好的材料

    在C51中,由于单片机的内存空间有限且具有特定的地址分配,有时我们需要将某些代码或数据固定在特定的内存位置,以满足硬件的要求或优化程序运行。这通常通过设置段寄存器或者在编译器链接阶段指定段地址来实现。...

    RuiCS-C51 Board程序

    1. **数据类型与变量**:C51提供了与标准C类似的数据类型,如int、char、byte等,但需注意单片机的内存限制,合理分配变量空间。 2. **端口操作**:C51提供了对单片机I/O端口的直接访问,如P0、P1、P2、P3等,可以...

    c51程序集锦

    在C51编程中,了解以下几个关键知识点至关重要: 1. 数据类型:C51提供了多种数据类型,如char、int、unsigned int、long等,它们分别对应不同长度的内存空间,用于存储不同大小的数值。此外,还有sbit和sfr,用于...

    Keil C51库函数参考.docx

    Keil C51 库函数提供了绝对地址 include 文件 `absacc.h`,该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。 动态内存分配函数 Keil C51 库函数提供了动态内存分配函数,位于 `stdlib.h` 中,这些函数...

    Keil-C51 编程工具

    Keil C51 IDE包括以下几个主要组件: 1. **C51编译器**:这是核心组件,负责将C源代码转换为机器码,供8051执行。C51编译器支持标准C89,以及针对8051特定的扩展,如位地址空间操作、中断服务例程等。 2. **汇编器...

Global site tag (gtag.js) - Google Analytics