CarterERO 发表于 2024-6-28 21:53

如何声明xdata、idata这种存储类型?

之前用51时候在前面加上就可以,32怎么操作啊?

ClarkLLOTP 发表于 2024-6-28 23:11

直接在变量前面声明就可以

xdvca 发表于 2024-6-29 18:23

unsigned char xdata myVariable;// 在片外RAM中声明一个字节变量
unsigned int xdata myArray;// 在片外RAM中声明一个整型数组

xdvca 发表于 2024-6-29 18:23

unsigned char idata myVariable;// 在内部RAM中声明一个字节变量
unsigned int idata myArray;// 在内部RAM中声明一个整型数组

xdvca 发表于 2024-6-29 18:23

unsigned char data myVariable;// 在直接数据存储器中声明一个字节变量
unsigned int data myArray;// 在直接数据存储器中声明一个整型数组

xdvca 发表于 2024-6-29 18:23

unsigned char pdata myVariable;// 在页片外RAM中声明一个字节变量
unsigned int pdata myArray;// 在页片外RAM中声明一个整型数组

xdvca 发表于 2024-6-29 18:23

unsigned char code myConst = 0x55;// 在程序存储器中声明一个字节常量
unsigned int code myArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};// 在程序存储器中声明一个整型常量数组

xdvca 发表于 2024-6-29 18:24

示例特定于Keil C51编译器和8051系列单片机。如果你使用的是其他平台或编译器,请查阅相应的编译器文档以获取正确的存储类型说明符和用法。

hudi008 发表于 2024-7-7 13:54

在 8051 单片机中,xdata 和 idata 是用来指定变量存储空间的类型

1988020566 发表于 2024-7-7 14:52

32 位单片机中,你通常不需要显式地声明 xdata 或 idata。

everyrobin 发表于 2024-7-7 16:28

如果你需要明确地指定变量存储在某个特定的外部内存区域,一些编译器可能支持特定的关键字或者属性。

janewood 发表于 2024-7-9 20:55

对于大多数应用来说,让编译器自动管理内存是最简单也是最高效的方法。

uptown 发表于 2024-7-9 23:59

在32位单片机中,变量的存储位置通常由编译器根据变量的作用域和生命周期自动优化分配。

modesty3jonah 发表于 2024-7-10 03:00

可以控制变量的存储属性,但这通常是通过编译器特定的扩展或链接器脚本来实现的。

linfelix 发表于 2024-7-10 06:04

参考你的单片机的技术手册和链接器文档来确定正确的属性和内存区域名称。

biechedan 发表于 2024-7-10 20:41

在51内核的单片机中,xdata 和 idata 是两种特殊的数据存储类型,它们分别表示外部RAM和间接寻址的片内RAM。

kmzuaz 发表于 2024-7-10 23:46

在32位单片机中,比如ARM Cortex-M系列,内存模型和寻址范围通常更为统一和广泛,所以并不需要像8位单片机那样严格地限定变量的存储区域。

bestwell 发表于 2024-7-12 09:06

在32位单片机上,你通常不需要(也无法)显式地声明变量存储在哪个具体的物理内存区域,因为编译器和链接器会根据变量的类型、大小和用途自动分配它们到最合适的内存区域

elsaflower 发表于 2024-7-12 12:14

这些特定的存储类型修饰符通常并不直接支持,因为它们的内存架构和寻址方式与8051单片机有很大不同。

benjaminka 发表于 2024-7-12 16:06

对于32位单片机,你可能不会使用idata和xdata这样的术语,因为它们是针对51单片机的有限寻址能力而设计的。
页: [1] 2 3
查看完整版本: 如何声明xdata、idata这种存储类型?