【转】MPLAB中#pragma伪指令

本文详细介绍了MPLAB C18编译器中的#pragma udata和#pragma idata伪指令,用于指定代码和数据在内存中的位置。讨论了程序存储器和数据存储器的不同段类型,如code、romdata、udata和idata,并解释了为什么段大小不能超过256的原因。同时,提到了如何查看变量存储位置的方法以及const关键字和rom关键字在ROM存储中的使用技巧。
摘要由CSDN通过智能技术生成

段声明伪指令 #pragma,将当前段更改为MPLAB C18 分配相关类型的信息的段。段是位于特定存储器地址的应用程序的一部分。段可以包含代码或数据,可以位于程序存储器或数据存储器中。对于每种存储器,都有两种段类型。即:

(1)程序存储器

  •  code: 包含可执行指令
  •  romdata: 包含变量和常量

(2) 数据存储器

  • udata   包含静态分配未初始化的用户变量
  • idata    包含静态分配已初始化的用户变量


A.语法结构:
段伪指令:
# pragma udata [ 属性列表] [section-name [=address]]
# pragma idata [ 属性列表] [section-name [=address]]
# pragma romdata [overlay] [section-name [=address]]
# pragma code [overlay] [section-name [=address]]

其中,section-name 是C标识符。 address 是整形常量

B.段内容
code段包含可执行的内容,位于程序存储器中。romdata段包含分配到程序存储器的数据(一般是用root限定符定义的变量)。
udata段包含静态分配到输出存储器的未进行初始化的全局数据。idata段包含静态分配到数据存储器的已进行初始化过的全局数据。

当一个数据块没有足够的空间用于存放一个连续的数据时(数组);此时便可用#pragma idata 或#pragma udata来定义一个新的存放数据块的区域。但是#pragma idata 或#pragma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值