eslab21 发表于 2019-7-4 08:06:31

为什么烧录STC89C52RC时会提示超出程序范围?

如题,我使用STC89C52RC,程序代码5K多,可是烧录时会提示文件大小超出程序范围,超出部分移到EEPROM区,点击确定可以继续执行,似乎也没什么问题。
我的疑问是程序大小似乎没到8K呀?怎么就超出呢?

weavr 发表于 2019-7-4 11:20:02

看一下下载软件显示的代码长度是不是超了

t3486784401 发表于 2019-7-4 11:40:52

上传HEX大家烧烧看?

pulan 发表于 2019-7-4 11:43:04

找一个C54,C58试试

huanxian 发表于 2019-7-4 11:56:56

程序代码5K多, 怎么看的,哪里看的, 截图

ap0705307 发表于 2019-7-4 12:06:19

看你选择下载的芯片型号

markdif 发表于 2019-7-4 12:13:58

换国产的STM32。。。吧{:titter:}

eslab21 发表于 2019-7-11 03:43:09

Keil会告诉代码大小,附件是代码。

eslab21 发表于 2019-7-11 04:03:43

用通用烧录器打开hex文件看到1569H地址以后都是FF,感觉是Keil编译器把烧录文件扩大了。

xuyaqi 发表于 2019-7-11 09:08:14

是否你的HEX文件编译有问题。

eslab21 发表于 2019-7-13 03:13:06

这个问题有点复杂,越看越糊涂。看看这个:
https://zhidao.baidu.com/question/64984630.html

再看这个:
https://blog.csdn.net/qlexcel/article/details/85097355
按照上文的方法试了几次也不行,似乎无法生成axf文件,可能是破解不完全?
"DDI26.AXF": Error: Q0122E: Could not open file 'DDI26.AXF': No such file or directory

zenghui 发表于 2019-7-13 09:01:54

你看看源码是不是有高端的地址操作,所以程序变大了。把HEX文件转换成bin文件看看

zenghui 发表于 2019-7-13 09:15:16

看看这一段

t3486784401 发表于 2019-7-13 09:33:44

如楼上所言,这么段烧录首地址都已经 FE00 了,对应 63K 往后,你这多大的 STC 都顶不住。
HEX 格式自行搜索,我圈出来的是烧录地址。

小李非刀 发表于 2019-7-15 22:24:55

这种通常是编译出了问题,将程序定位到后面去了,KEIL报告的代码大小是指有效代码,不是绝对长度。
比如我用汇编,程序定位在0xf000,只写几个字节的程序,编译后KEIL提示只有几个字节,但是HEX展开成二进制后,已经超过61K。
或C语言定位在0xf000,效果也一样。

eslab21 发表于 2019-7-16 02:50:16

zenghui 发表于 2019-7-13 09:15
看看这一段

正解!的确是有绝对地址操作。这个程序是从SM5964移植过来的,SM5964的ISP程序放在flash的最后,移植时忘了去掉这段代码。现在去掉ISP有关代码问题彻底解决了!
页: [1]
查看完整版本: 为什么烧录STC89C52RC时会提示超出程序范围?