打印
[MM32软件]

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

[复制链接]
3794|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CarterERO|  楼主 | 2024-6-28 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前用51时候在前面加上就可以,32怎么操作啊?

使用特权

评论回复
沙发
ClarkLLOTP| | 2024-6-28 23:11 | 只看该作者
直接在变量前面声明就可以

使用特权

评论回复
板凳
xdvca| | 2024-6-29 18:23 | 只看该作者
unsigned char xdata myVariable;  // 在片外RAM中声明一个字节变量
unsigned int xdata myArray[10];  // 在片外RAM中声明一个整型数组

使用特权

评论回复
地板
xdvca| | 2024-6-29 18:23 | 只看该作者
unsigned char idata myVariable;  // 在内部RAM中声明一个字节变量
unsigned int idata myArray[10];  // 在内部RAM中声明一个整型数组

使用特权

评论回复
5
xdvca| | 2024-6-29 18:23 | 只看该作者
unsigned char data myVariable;  // 在直接数据存储器中声明一个字节变量
unsigned int data myArray[10];  // 在直接数据存储器中声明一个整型数组

使用特权

评论回复
6
xdvca| | 2024-6-29 18:23 | 只看该作者
unsigned char pdata myVariable;  // 在页片外RAM中声明一个字节变量
unsigned int pdata myArray[10];  // 在页片外RAM中声明一个整型数组

使用特权

评论回复
7
xdvca| | 2024-6-29 18:23 | 只看该作者
unsigned char code myConst = 0x55;  // 在程序存储器中声明一个字节常量
unsigned int code myArray[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};  // 在程序存储器中声明一个整型常量数组

使用特权

评论回复
8
xdvca| | 2024-6-29 18:24 | 只看该作者
示例特定于Keil C51编译器和8051系列单片机。如果你使用的是其他平台或编译器,请查阅相应的编译器文档以获取正确的存储类型说明符和用法。

使用特权

评论回复
9
hudi008| | 2024-7-7 13:54 | 只看该作者
在 8051 单片机中,xdata 和 idata 是用来指定变量存储空间的类型

使用特权

评论回复
10
1988020566| | 2024-7-7 14:52 | 只看该作者
32 位单片机中,你通常不需要显式地声明 xdata 或 idata。

使用特权

评论回复
11
everyrobin| | 2024-7-7 16:28 | 只看该作者
如果你需要明确地指定变量存储在某个特定的外部内存区域,一些编译器可能支持特定的关键字或者属性。

使用特权

评论回复
12
janewood| | 2024-7-9 20:55 | 只看该作者
对于大多数应用来说,让编译器自动管理内存是最简单也是最高效的方法。

使用特权

评论回复
13
uptown| | 2024-7-9 23:59 | 只看该作者
在32位单片机中,变量的存储位置通常由编译器根据变量的作用域和生命周期自动优化分配。

使用特权

评论回复
14
modesty3jonah| | 2024-7-10 03:00 | 只看该作者
可以控制变量的存储属性,但这通常是通过编译器特定的扩展或链接器脚本来实现的。

使用特权

评论回复
15
linfelix| | 2024-7-10 06:04 | 只看该作者
参考你的单片机的技术手册和链接器文档来确定正确的属性和内存区域名称。

使用特权

评论回复
16
biechedan| | 2024-7-10 20:41 | 只看该作者
在51内核的单片机中,xdata 和 idata 是两种特殊的数据存储类型,它们分别表示外部RAM和间接寻址的片内RAM。

使用特权

评论回复
17
kmzuaz| | 2024-7-10 23:46 | 只看该作者
在32位单片机中,比如ARM Cortex-M系列,内存模型和寻址范围通常更为统一和广泛,所以并不需要像8位单片机那样严格地限定变量的存储区域。

使用特权

评论回复
18
bestwell| | 2024-7-12 09:06 | 只看该作者
在32位单片机上,你通常不需要(也无法)显式地声明变量存储在哪个具体的物理内存区域,因为编译器和链接器会根据变量的类型、大小和用途自动分配它们到最合适的内存区域

使用特权

评论回复
19
elsaflower| | 2024-7-12 12:14 | 只看该作者
这些特定的存储类型修饰符通常并不直接支持,因为它们的内存架构和寻址方式与8051单片机有很大不同。

使用特权

评论回复
20
benjaminka| | 2024-7-12 16:06 | 只看该作者
对于32位单片机,你可能不会使用idata和xdata这样的术语,因为它们是针对51单片机的有限寻址能力而设计的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

242

帖子

0

粉丝