请教坛友,51的内存分配问题。

2020-01-13 18:23发布

很久没用51了,一直用32,最近有个项目要用到51,是ADI的(非常规51),内存默认为SMALL DATA,后来写着发现不够了,转成PDATA或XDATA都有问题,默认的SMALL DATA就正常,后来用了IDATA就可以了,还是默认的SMALL DATA,但KEIL上说默认的最多256个字节,如果想多一些怎么办?用PDATA或XDATA好像都是外挂,ADI的内存有2K多,怎么合理的用上这2K多?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
ZHAOBAO511
1楼-- · 2020-01-14 11:30
Ilove51andAVR 发表于 2019-4-23 08:42
楼主介绍一下为什么选ADI?大家都没听说过这个品牌。有什么性能参数值得你去选它? ...

可能有的真的用不到,因为STM32便宜好用,特殊情况用ADI,AD 做的好,送单片机功能。
ZHAOBAO511
2楼-- · 2020-01-14 14:48
 精彩回答 2  元偷偷看……
ZHAOBAO511
3楼-- · 2020-01-14 16:29
t3486784401 发表于 2019-4-23 09:25
设置页面总共就那么几页:

谢谢!我试试看。
ZHAOBAO511
4楼-- · 2020-01-14 17:26
t3486784401 发表于 2019-4-23 09:25
设置页面总共就那么几页:

为什么不可以自动设定?从257开始到2K?
Ilove51andAVR
5楼-- · 2020-01-14 19:02
ZHAOBAO511 发表于 2019-4-23 11:36
可能有的真的用不到,因为STM32便宜好用,特殊情况用ADI,AD 做的好,送单片机功能。 ...

ADI的AD 做的好,使用AD,送单片机功能+1.
t3486784401
6楼-- · 2020-01-14 21:50
ZHAOBAO511 发表于 2019-4-23 11:38
为什么不可以自动设定?从257开始到2K?

我试了试,看来 51 知识点也忘差不多了。

XDATA 区使用 MOVX 访问,有别于片上内存/SFR的 MOV,因而地址不重合,是 64KB 完整的地址空间。
默认使用 XDATA 区的话,会从 0000H 开始访问,只有指定了起始位置和长度,才会从指定位置走起。

看看编译出来的 MAP 文件就清楚了。主程序这样:

2019-04-23_141925.png (20.89 KB, 下载次数: 0)

下载附件

2019-4-23 14:24 上传




至于硬件设计,一般为了避嫌都是不用 XDATA: 0000H-0100H 这个段,目测这个导致了“直接XDATA没反应”的结果。

一周热门 更多>