標(biāo)題: 基于51單片機的萬年歷設(shè)計HEX文件太大無法燒錄 [打印本頁]

作者: wuqing12345    時間: 2024-4-23 08:41
標(biāo)題: 基于51單片機的萬年歷設(shè)計HEX文件太大無法燒錄
求各位大佬指點一下,hex文件燒錄不進去顯示太大了不知道怎么辦了最后一步呢求各位大佬!

屏幕截圖 2024-04-23 085925.png (140.14 KB, 下載次數(shù): 63)

屏幕截圖 2024-04-23 085925.png

11.png (193.54 KB, 下載次數(shù): 53)

11.png

新建 WinRAR ZIP 壓縮文件.zip

185.26 KB, 下載次數(shù): 22


作者: cy009    時間: 2024-4-23 10:19
89C52RC只有8K,換芯片吧
作者: devcang    時間: 2024-4-23 10:47
換大內(nèi)存的單片機,或縮減程序
作者: dj3365191    時間: 2024-4-23 10:56
STC89C52RC的存儲只有8K,要換單片機了
作者: joyb    時間: 2024-4-23 11:22
試了一下,可以燒錄,仿真存成低版本,打不開
作者: wuqing12345    時間: 2024-4-23 11:31
dj3365191 發(fā)表于 2024-4-23 10:56
STC89C52RC的存儲只有8K,要換單片機了

我看有人說變量加xdata不知道什么意思
作者: wuqing12345    時間: 2024-4-23 11:34
dj3365191 發(fā)表于 2024-4-23 10:56
STC89C52RC的存儲只有8K,要換單片機了

大佬如果要換單片機可以給推薦一下不,內(nèi)存夠的不用動代碼的有沒有啊拜托了

作者: Graves    時間: 2024-4-23 11:49
STC89C53RC
作者: npn    時間: 2024-4-23 15:53
程序里若有code的只讀數(shù)組可以放進EEPROM里 (是否能優(yōu)化具體看程序)
作者: lids    時間: 2024-4-23 15:58
wuqing12345 發(fā)表于 2024-4-23 11:34
大佬如果要換單片機可以給推薦一下不,內(nèi)存夠的不用動代碼的有沒有啊拜托了

自己選吧

51hei截圖_20240423155714.png (560.04 KB, 下載次數(shù): 66)

51hei截圖_20240423155714.png

作者: wuqing12345    時間: 2024-4-23 16:24
npn 發(fā)表于 2024-4-23 15:53
程序里若有code的只讀數(shù)組可以放進EEPROM里 (是否能優(yōu)化具體看程序)

大佬可以麻煩您幫我看一看程序嗎,我改不出來里面有很多只讀數(shù)組。拜托大佬了
作者: wuqing12345    時間: 2024-4-23 16:26
qq475878026 發(fā)表于 2024-4-23 11:49
STC89C53RC

大佬這個型號可以不用動代碼直接使用嗎
作者: Graves    時間: 2024-4-23 16:52
wuqing12345 發(fā)表于 2024-4-23 16:26
大佬這個型號可以不用動代碼直接使用嗎

不清楚,沒用過53。估計是可以的,手冊把51、52、53寫在一起了。實際情況還是得看看手冊行不行
作者: Hephaestus    時間: 2024-4-23 17:21
wuqing12345 發(fā)表于 2024-4-23 16:24
大佬可以麻煩您幫我看一看程序嗎,我改不出來里面有很多只讀數(shù)組。拜托大佬了

你的代碼非常簡單,什么51都能用,大是大在漢字點陣字庫上面了,只要你一定要顯示漢字就無解。
作者: aidianzi    時間: 2024-4-23 18:59
你單片機內(nèi)部ROM不夠 換16K FLASH的或者更大的
作者: rayin    時間: 2024-4-24 08:05
可以換STC12C5A60 的型號, 有60K的flash空間. 做萬年歷夠用了.
作者: 大漠落日    時間: 2024-4-24 18:12
換芯片吧,要不簡化程序,把萬年改成若干年的,縮小編譯后的大小
作者: Hephaestus    時間: 2024-4-24 19:22
大漠落日 發(fā)表于 2024-4-24 18:12
換芯片吧,要不簡化程序,把萬年改成若干年的,縮小編譯后的大小

你還是親自看看他那個程序到底大在哪里,不要憑空想象。
作者: wuqing12345    時間: 2024-4-24 20:54
rayin 發(fā)表于 2024-4-24 08:05
可以換STC12C5A60 的型號, 有60K的flash空間. 做萬年歷夠用了.

大佬這個可以直接用不用動代碼嘛
作者: wuqing12345    時間: 2024-4-24 23:34
npn 發(fā)表于 2024-4-23 15:53
程序里若有code的只讀數(shù)組可以放進EEPROM里 (是否能優(yōu)化具體看程序)

大佬可以幫忙指導(dǎo)修改一下嘛 我試了半天變量加Xdata不成功拜托了
作者: yzw846562238    時間: 2024-4-25 08:42
wuqing12345 發(fā)表于 2024-4-24 23:34
大佬可以幫忙指導(dǎo)修改一下嘛 我試了半天變量加Xdata不成功拜托了

加xdata不行的,加了占用flash空間反而更大了。xdata一般是data空間不夠用了再用
作者: heyanrog    時間: 2024-4-25 17:37
把那些注釋刪了再編譯,文件就小了
作者: donglw    時間: 2024-4-25 18:27
wuqing12345 發(fā)表于 2024-4-23 11:31
我看有人說變量加xdata不知道什么意思

xdata 常用于單片機內(nèi)存片外擴展,這需要更改電路,直接換一個存儲內(nèi)存大一點的芯片即可。
作者: Hephaestus    時間: 2024-4-25 19:22
wuqing12345 發(fā)表于 2024-4-24 23:34
大佬可以幫忙指導(dǎo)修改一下嘛 我試了半天變量加Xdata不成功拜托了

他們都是不看你的代碼不負責(zé)任亂說的,你的真正執(zhí)行的代碼非常簡單,RAM完全夠用,不需要加XDATA。你的問題是漢字點陣字庫占用了太多flash,只要找flash大的型號就行了。
作者: hclin    時間: 2024-4-25 23:35
你的 character.h 實在有夠大。
簡化顯示在12864的畫面,89c52 應(yīng)該就擠的下去。
作者: STC莊偉    時間: 2024-4-26 09:39
你咋不用帶RTC的芯片呢  現(xiàn)在都是標(biāo)配了,九毛九的STC8H2K08U也有RTC
作者: lhzw2001    時間: 2024-4-26 10:15
沒辦法,程序那么大,唯有換芯
作者: holikey    時間: 2024-4-26 11:27
換stc12,有引腳兼容的64KBflash型號,另外可以檢查看看程序優(yōu)化等級是否為最高
作者: wuqing12345    時間: 2024-4-30 15:15
Hephaestus 發(fā)表于 2024-4-25 19:22
他們都是不看你的代碼不負責(zé)任亂說的,你的真正執(zhí)行的代碼非常簡單,RAM完全夠用,不需要加XDATA。你的問 ...

大佬我換了STC89C58RD+可以燒錄進去了但是屏幕顯示有點問題大佬可以給看一看嗎


作者: 五六    時間: 2024-4-30 19:41
屏幕顯示的只讀數(shù)組用xdata放在eeprom,keil可以設(shè)置程序優(yōu)化等級,拉到最高再次驗證程序。
作者: 五六    時間: 2024-4-30 19:41
屏幕顯示的只讀數(shù)組用xdata放在eeprom,keil可以設(shè)置程序優(yōu)化等級,拉到最高再次驗證程序。
作者: 3253087609ydrq    時間: 2024-5-20 22:10
換成stc12c5a60s2吧,五塊錢60KB,10位ADC,處理速度還比c52快,
作者: rundstedt    時間: 2024-5-20 23:12
五六 發(fā)表于 2024-4-30 19:41
屏幕顯示的只讀數(shù)組用xdata放在eeprom,keil可以設(shè)置程序優(yōu)化等級,拉到最高再次驗證程序。

基礎(chǔ)沒學(xué)好,只讀是code空間,xdata是讀寫,樓主的問題是code空間不夠了。
作者: ztzp    時間: 2024-5-21 00:44
heyanrog 發(fā)表于 2024-4-25 17:37
把那些注釋刪了再編譯,文件就小了

注釋又不參與編譯,刪除了也不會影響文件大小。
作者: 2300606886    時間: 2024-7-13 17:18
STC89C53RCRC
作者: hezezeze    時間: 2024-8-7 17:17
面對51單片機設(shè)計萬年歷時遇到的HEX文件過大無法燒錄的問題,可以采取以下幾個策略來優(yōu)化和解決:  1. **代碼優(yōu)化**:    - **刪除不必要的代碼**:檢查并刪除不使用的函數(shù)、代碼段或數(shù)據(jù),特別是那些在運行過程中不被調(diào)用的部分。    - **使用更高效的算法**:對循環(huán)、數(shù)據(jù)處理等部分優(yōu)化算法,減少內(nèi)存和執(zhí)行時間的消耗。    - **變量類型優(yōu)化**:選擇合適的變量類型,例如使用更小的整數(shù)類型(比如使用char或short代替int),在不損失必要精度的情況下減少內(nèi)存占用。  2. **使用更小的編譯器**:    - **選擇更緊湊的編譯器**:不同的編譯器對代碼的優(yōu)化程度不同,選擇專門針對51單片機且優(yōu)化程度高的編譯器可能會減少代碼大小。    - **編譯器選項**:在編譯選項中選擇更緊湊的代碼生成,如減少注釋生成、優(yōu)化庫函數(shù)使用等。  3. **資源管理**:    - **內(nèi)存管理**:合理使用全局變量和靜態(tài)變量,減少動態(tài)分配的內(nèi)存使用。    - **結(jié)構(gòu)和數(shù)組的優(yōu)化**:如果使用了大量數(shù)組和結(jié)構(gòu)體,考慮優(yōu)化其大小,比如使用指針代替數(shù)組,或者將數(shù)組聲明為靜態(tài)局部變量。  4. **代碼重用**:    - **共享庫**:如果代碼中存在重復(fù)的函數(shù)或模塊,考慮將其封裝為庫文件,減少重復(fù)代碼的大小。  5. **HEX文件編輯**:    - **手動編輯HEX文件**:雖然不太常規(guī),但可以嘗試手動減少HEX文件的大小,例如刪除不必要的數(shù)據(jù)點或使用更緊湊的格式。    - **使用HEX編輯器**:使用專門的HEX文件編輯工具,嘗試調(diào)整和優(yōu)化文件結(jié)構(gòu)。  6. **硬件資源**:    - **考慮使用更高級的單片機**:如果可能,升級至更先進的51單片機型號,它們可能提供更大的內(nèi)存空間或更多的功能,從而可以容納較大的程序。  7. **外部存儲器**:    - **使用SRAM或EEPROM擴展**:如果內(nèi)存不足,考慮使用外部RAM或EEPROM來存儲一些不經(jīng)常訪問的數(shù)據(jù),從而減少程序HEX文件的大小。  8. **重新設(shè)計**:    - **模塊化設(shè)計**:將萬年歷功能分解為多個模塊,只燒錄需要的模塊到單片機,其余模塊可以使用外部存儲或通過其他方式訪問。  9. **驗證和測試**:    - **分階段燒錄**:驗證程序在單片機上的正確性,逐步增加功能模塊,以確保每個階段的程序能夠正確燒錄和運行。  通過上述方法的綜合運用,可以有效減小HEX文件的大小,從而解決無法燒錄的問題。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1