找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2655|回复: 35
收起左侧

基于51单片机的万年历设计HEX文件太大无法烧录

  [复制链接]
ID:1115386 发表于 2024-4-23 08:41 | 显示全部楼层 |阅读模式
200黑币
求各位大佬指点一下,hex文件烧录不进去显示太大了不知道怎么办了最后一步呢求各位大佬啊!

屏幕截图 2024-04-23 085925.png
11.png

新建 WinRAR ZIP 压缩文件.zip

185.26 KB, 下载次数: 21

回复

使用道具 举报

ID:619259 发表于 2024-4-23 10:19 | 显示全部楼层
89C52RC只有8K,换芯片吧
回复

使用道具 举报

ID:277550 发表于 2024-4-23 10:47 | 显示全部楼层
换大内存的单片机,或缩减程序
回复

使用道具 举报

ID:143767 发表于 2024-4-23 10:56 | 显示全部楼层
STC89C52RC的存储只有8K,要换单片机了
回复

使用道具 举报

ID:1064915 发表于 2024-4-23 11:22 | 显示全部楼层
试了一下,可以烧录,仿真存成低版本,打不开
回复

使用道具 举报

ID:1115386 发表于 2024-4-23 11:31 | 显示全部楼层
dj3365191 发表于 2024-4-23 10:56
STC89C52RC的存储只有8K,要换单片机了

我看有人说变量加xdata不知道什么意思
回复

使用道具 举报

ID:1115386 发表于 2024-4-23 11:34 | 显示全部楼层
dj3365191 发表于 2024-4-23 10:56
STC89C52RC的存储只有8K,要换单片机了

大佬如果要换单片机可以给推荐一下不,内存够的不用动代码的有没有啊拜托了
回复

使用道具 举报

ID:192020 发表于 2024-4-23 11:49 | 显示全部楼层
STC89C53RC
回复

使用道具 举报

ID:57657 发表于 2024-4-23 15:53 | 显示全部楼层
程序里若有code的只读数组可以放进EEPROM里 (是否能优化具体看程序)
回复

使用道具 举报

ID:140489 发表于 2024-4-23 15:58 | 显示全部楼层
wuqing12345 发表于 2024-4-23 11:34
大佬如果要换单片机可以给推荐一下不,内存够的不用动代码的有没有啊拜托了

自己选吧

51hei截图_20240423155714.png
回复

使用道具 举报

ID:1115386 发表于 2024-4-23 16:24 | 显示全部楼层
npn 发表于 2024-4-23 15:53
程序里若有code的只读数组可以放进EEPROM里 (是否能优化具体看程序)

大佬可以麻烦您帮我看一看程序吗,我改不出来里面有很多只读数组。拜托大佬了
回复

使用道具 举报

ID:1115386 发表于 2024-4-23 16:26 | 显示全部楼层

大佬这个型号可以不用动代码直接使用吗
回复

使用道具 举报

ID:192020 发表于 2024-4-23 16:52 | 显示全部楼层
wuqing12345 发表于 2024-4-23 16:26
大佬这个型号可以不用动代码直接使用吗

不清楚,没用过53。估计是可以的,手册把51、52、53写在一起了。实际情况还是得看看手册行不行
回复

使用道具 举报

ID:883242 发表于 2024-4-23 17:21 | 显示全部楼层
wuqing12345 发表于 2024-4-23 16:24
大佬可以麻烦您帮我看一看程序吗,我改不出来里面有很多只读数组。拜托大佬了

你的代码非常简单,什么51都能用,大是大在汉字点阵字库上面了,只要你一定要显示汉字就无解。
回复

使用道具 举报

ID:41656 发表于 2024-4-23 18:59 | 显示全部楼层
你单片机内部ROM不够 换16K FLASH的或者更大的
回复

使用道具 举报

ID:517951 发表于 2024-4-24 08:05 | 显示全部楼层
可以换STC12C5A60 的型号, 有60K的flash空间. 做万年历够用了.
回复

使用道具 举报

ID:195496 发表于 2024-4-24 18:12 | 显示全部楼层
换芯片吧,要不简化程序,把万年改成若干年的,缩小编译后的大小
回复

使用道具 举报

ID:883242 发表于 2024-4-24 19:22 | 显示全部楼层
大漠落日 发表于 2024-4-24 18:12
换芯片吧,要不简化程序,把万年改成若干年的,缩小编译后的大小

你还是亲自看看他那个程序到底大在哪里,不要凭空想象。
回复

使用道具 举报

ID:1115386 发表于 2024-4-24 20:54 | 显示全部楼层
rayin 发表于 2024-4-24 08:05
可以换STC12C5A60 的型号, 有60K的flash空间. 做万年历够用了.

大佬这个可以直接用不用动代码嘛
回复

使用道具 举报

ID:1115386 发表于 2024-4-24 23:34 来自手机 | 显示全部楼层
npn 发表于 2024-4-23 15:53
程序里若有code的只读数组可以放进EEPROM里 (是否能优化具体看程序)

大佬可以帮忙指导修改一下嘛 我试了半天变量加Xdata不成功拜托了
回复

使用道具 举报

ID:458247 发表于 2024-4-25 08:42 | 显示全部楼层
wuqing12345 发表于 2024-4-24 23:34
大佬可以帮忙指导修改一下嘛 我试了半天变量加Xdata不成功拜托了

加xdata不行的,加了占用flash空间反而更大了。xdata一般是data空间不够用了再用
回复

使用道具 举报

ID:11804 发表于 2024-4-25 17:37 | 显示全部楼层
把那些注释删了再编译,文件就小了
回复

使用道具 举报

ID:344848 发表于 2024-4-25 18:27 | 显示全部楼层
wuqing12345 发表于 2024-4-23 11:31
我看有人说变量加xdata不知道什么意思

xdata 常用于单片机内存片外扩展,这需要更改电路,直接换一个存储内存大一点的芯片即可。
回复

使用道具 举报

ID:883242 发表于 2024-4-25 19:22 | 显示全部楼层
wuqing12345 发表于 2024-4-24 23:34
大佬可以帮忙指导修改一下嘛 我试了半天变量加Xdata不成功拜托了

他们都是不看你的代码不负责任乱说的,你的真正执行的代码非常简单,RAM完全够用,不需要加XDATA。你的问题是汉字点阵字库占用了太多flash,只要找flash大的型号就行了。
回复

使用道具 举报

ID:43600 发表于 2024-4-25 23:35 | 显示全部楼层
你的 character.h 實在有夠大。
簡化顯示在12864的畫面,89c52 應該就擠的下去。
回复

使用道具 举报

ID:961114 发表于 2024-4-26 09:39 | 显示全部楼层
你咋不用带RTC的芯片呢  现在都是标配了,九毛九的STC8H2K08U也有RTC
回复

使用道具 举报

ID:203661 发表于 2024-4-26 10:15 | 显示全部楼层
没办法,程序那么大,唯有换芯
回复

使用道具 举报

ID:237218 发表于 2024-4-26 11:27 | 显示全部楼层
换stc12,有引脚兼容的64KBflash型号,另外可以检查看看程序优化等级是否为最高
回复

使用道具 举报

ID:1115386 发表于 2024-4-30 15:15 | 显示全部楼层
Hephaestus 发表于 2024-4-25 19:22
他们都是不看你的代码不负责任乱说的,你的真正执行的代码非常简单,RAM完全够用,不需要加XDATA。你的问 ...

大佬我换了STC89C58RD+可以烧录进去了但是屏幕显示有点问题大佬可以给看一看吗

回复

使用道具 举报

ID:1118978 发表于 2024-4-30 19:41 | 显示全部楼层
屏幕显示的只读数组用xdata放在eeprom,keil可以设置程序优化等级,拉到最高再次验证程序。
回复

使用道具 举报

ID:1118978 发表于 2024-4-30 19:41 | 显示全部楼层
屏幕显示的只读数组用xdata放在eeprom,keil可以设置程序优化等级,拉到最高再次验证程序。
回复

使用道具 举报

ID:871721 发表于 2024-5-20 22:10 来自手机 | 显示全部楼层
换成stc12c5a60s2吧,五块钱60KB,10位ADC,处理速度还比c52快,
回复

使用道具 举报

ID:879809 发表于 2024-5-20 23:12 | 显示全部楼层
五六 发表于 2024-4-30 19:41
屏幕显示的只读数组用xdata放在eeprom,keil可以设置程序优化等级,拉到最高再次验证程序。

基础没学好,只读是code空间,xdata是读写,楼主的问题是code空间不够了。
回复

使用道具 举报

ID:97023 发表于 2024-5-21 00:44 | 显示全部楼层
heyanrog 发表于 2024-4-25 17:37
把那些注释删了再编译,文件就小了

注释又不参与编译,删除了也不会影响文件大小。
回复

使用道具 举报

ID:1116913 发表于 2024-7-13 17:18 | 显示全部楼层
STC89C53RCRC
回复

使用道具 举报

ID:982617 发表于 2024-8-7 17:17 | 显示全部楼层
面对51单片机设计万年历时遇到的HEX文件过大无法烧录的问题,可以采取以下几个策略来优化和解决:  1. **代码优化**:    - **删除不必要的代码**:检查并删除不使用的函数、代码段或数据,特别是那些在运行过程中不被调用的部分。    - **使用更高效的算法**:对循环、数据处理等部分优化算法,减少内存和执行时间的消耗。    - **变量类型优化**:选择合适的变量类型,例如使用更小的整数类型(比如使用char或short代替int),在不损失必要精度的情况下减少内存占用。  2. **使用更小的编译器**:    - **选择更紧凑的编译器**:不同的编译器对代码的优化程度不同,选择专门针对51单片机且优化程度高的编译器可能会减少代码大小。    - **编译器选项**:在编译选项中选择更紧凑的代码生成,如减少注释生成、优化库函数使用等。  3. **资源管理**:    - **内存管理**:合理使用全局变量和静态变量,减少动态分配的内存使用。    - **结构和数组的优化**:如果使用了大量数组和结构体,考虑优化其大小,比如使用指针代替数组,或者将数组声明为静态局部变量。  4. **代码重用**:    - **共享库**:如果代码中存在重复的函数或模块,考虑将其封装为库文件,减少重复代码的大小。  5. **HEX文件编辑**:    - **手动编辑HEX文件**:虽然不太常规,但可以尝试手动减少HEX文件的大小,例如删除不必要的数据点或使用更紧凑的格式。    - **使用HEX编辑器**:使用专门的HEX文件编辑工具,尝试调整和优化文件结构。  6. **硬件资源**:    - **考虑使用更高级的单片机**:如果可能,升级至更先进的51单片机型号,它们可能提供更大的内存空间或更多的功能,从而可以容纳较大的程序。  7. **外部存储器**:    - **使用SRAM或EEPROM扩展**:如果内存不足,考虑使用外部RAM或EEPROM来存储一些不经常访问的数据,从而减少程序HEX文件的大小。  8. **重新设计**:    - **模块化设计**:将万年历功能分解为多个模块,只烧录需要的模块到单片机,其余模块可以使用外部存储或通过其他方式访问。  9. **验证和测试**:    - **分阶段烧录**:验证程序在单片机上的正确性,逐步增加功能模块,以确保每个阶段的程序能够正确烧录和运行。  通过上述方法的综合运用,可以有效减小HEX文件的大小,从而解决无法烧录的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表