bkeuqoaq 发表于 2024-12-17 10:06:37

8H8K64U 发表于 2024-12-17 10:00
AI8051U有2k的edata

32位时才有,8位时没有

神农鼎 发表于 2025-4-23 20:03:19



_NCY_ 发表于 2025-7-23 20:47:39

hdata我也刚刚才用到。
外扩32kram的时候设置target option 的external memory栏,ram空间起始位置填0x7f0000,size填32k(记得填十六进制数)。
配置俩寄存器(手册里有,一个使能,一个总线速度)再把ram的片选拉低
然后在代码里就可以unssigned int far exram,你获得超大内存空间的同时exram数组就是放在了hdata里,也就是那个2~3周期访问,比较慢的那个

BeHappy 发表于 2026-2-22 04:19:11

众所周知,8051U有2 KB容量的edata,这里面又包含了256字节的data段空间(00H ~ 0FFH,其中高128字节,只能间接寻址)。
例如,我把spx赋值为1000d,那么在此之前的edata空间应该是用户可以任意使用的空间。
现在遇到个小问题:
想定义一块128字节的空间,用作缓冲区。
如果把它定义在data段(从30H开始),肯定是不行的(因为Keil手册中定义了DATA段是00H ~ 7FH)
结合前面的知识,好,把这块空间放到edata段,是不是需要用AT指定起始地址,例如AT   80H?


是不是用WR0 ~ WR30可以访问整个EDATA空间(00H ~ 7FFH)?

keil手册对edata的描述如下:




页: 1 2 [3]
查看完整版本: KEIL5中的data,edate,hdata,和edata分别对应 32G12K128 的哪些存储区域?