标题: 请问如何在keil中设置RAM的大小? [打印本页]

作者: 戡拤    时间: 2023-8-2 16:58
标题: 请问如何在keil中设置RAM的大小?
我用的是STC15w型号的单片机,通常在keil选择“AT89C51”就行,但是“AT89C51”只有128Byte ram,请问大家超出范围了咋办?怎么设置keil,以至于达到2k ram?

keil1.png (25.73 KB, 下载次数: 48)

keil1.png

作者: hange_v    时间: 2023-8-2 20:09
装STC的包,不要用这个包
作者: lkc8210    时间: 2023-8-2 21:12
长数组用idata或xdata
作者: Hephaestus    时间: 2023-8-2 22:55
如果你没有专用的仿真器,只是凭借烧录后的运行结果来判断程序写的对不对,那么这里是可以瞎填的,不需要正确设置,能不能合理的利用全部RAM,完全是凭借你的软件写的是否正确,这里的设置完全没有意义。
作者: 戡拤    时间: 2023-8-3 08:16
RAM只能这样设置吗?能不能像汇编一样在程序中设置好?
作者: 戡拤    时间: 2023-8-3 08:19
Hephaestus 发表于 2023-8-2 22:55
如果你没有专用的仿真器,只是凭借烧录后的运行结果来判断程序写的对不对,那么这里是可以瞎填的,不需要正 ...

我之前设置了了一个数组查表,结果编译没有错误,烧录进芯片中就出问题了,发现是数组占用了所有ram空间
作者: a825563619    时间: 2023-8-3 09:36
戡拤 发表于 2023-8-3 08:19
我之前设置了了一个数组查表,结果编译没有错误,烧录进芯片中就出问题了,发现是数组占用了所有ram空间

可以用code把数组放入flash空间,就不占ram空间了
作者: 戡拤    时间: 2023-8-3 09:57
a825563619 发表于 2023-8-3 09:36
可以用code把数组放入flash空间,就不占ram空间了

是的,我就是这样做的,但我不知道编译是以“AT89C51”128Byte判断,还是实际烧录的芯片
作者: Hephaestus    时间: 2023-8-3 10:00
戡拤 发表于 2023-8-3 08:19
我之前设置了了一个数组查表,结果编译没有错误,烧录进芯片中就出问题了,发现是数组占用了所有ram空间

这是你选错了芯片造成的吗?
作者: 戡拤    时间: 2023-8-3 11:58
我知道了,我之前试过,在keil中我选择AT89C51,然后我设置了一个查表数组是这样的u8 xdata Arry[256]{},编译的时候没有报错,但是烧录进芯片后就出了问题。所以结论是,keil中,它只管编译有没有报错,不管实际中芯片RAM的大小
作者: wufa1986    时间: 2023-8-3 16:27
不需要设置。程序默认都有最大ram但是你用就不能超芯片范围
作者: Hephaestus    时间: 2023-8-3 18:00
戡拤 发表于 2023-8-3 11:58
我知道了,我之前试过,在keil中我选馎T89C51,然后我设置了一个查表数组是这样的u8 xdata Arry[256]{},编 ...

这跟你设置成什么芯片有一毛钱的关系吗?
作者: hi等你    时间: 2023-8-4 09:45
楼主可能还没搞懂ram和程序rom之间的关系,还是多学习吧
作者: hi等你    时间: 2023-8-4 13:16
对不起楼主,是我孤陋寡闻,刚刚查资料才知道stc15w的片内ram居然多达2k,可以用movx

指令来读写这2k片内ram
作者: rayin    时间: 2023-8-5 07:45
可以用STC12C5A60S2来替代AT89C51, 40PIN管脚一对一兼容, 指令兼容, 片内带1K XRAM. 不需要Keil设置xram, 注意软件设置XRAM开关, 就能用xram了.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1