(单片机实际制作时)内外RAM的问题 (Keil软件 build窗口program size中data的单位)

2025-02-28 03:08:46
推荐回答(3个)
回答1:

先说说这几个词是什么意思:
1,DATA,51的内部RAM,只有128B(字节)大小,不管是最新的什么增强型单片机;

2,XDATA,外部RAM,只能使用MOVX寻址

3,CODE,代码区,即是你的代码的大小,AT89C51为4K,C52为8K等,增强型的有更多的选择。

然后说明一下,几种RAM的区别:
1,DATA,也是上面1提到的DATA RAM,占51的128B;
2,IDATA,大小也为128B,与DATA构成256字节的内存(如AT89C52)
3,PDATA,外部RAM的前256B(就是一个页的大小),是XDATA的一部分;
4,XDATA,外部RAM

所以你的那个单片机的1280B,其实组成为:
DATA :128B
IDATA:128B
XDATA:1024B

所以你的问题,“使用片内RAM”打勾只是软件仿真用的;你的XDATA用了758B,说明你特意用XDATA关键字定了这么大的内存,比如大数组或者内存模式时,使用了lager模式,那么编译器会自动把超出的部分放到XDATA里,我猜你应该是这里选择了lager模式,不过你的内容这么大,也只能选择lager模式。

以上为原创,如果想看更详细的介绍,可以看以下链接:
http://hi.baidu.com/efei789/blog/item/cf9afc0a12a4801994ca6bfb.html

回答2:

选择内存模式为small:variables in DATA
按理说不会去XDATA,看看是否定义了大的数组?uint mtab[100]之类的?
可否给出源程序?

回答3:

都是字节,我写了个小程序试过了,