找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6304|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

最新keil c51 0xFD修復(fù)工具下載

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68143 發(fā)表于 2018-7-31 17:22 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

keil c51升級(jí)到v9.54后,原來的0XFD修復(fù)工具失效了,所有寫了這個(gè)小工具。


0XFD問題是keil c51中一直存在的一個(gè)問題,表現(xiàn)為當(dāng)C源代碼中使用了漢字等非ASCII字符,而此字符的編碼又恰好包含了大于或等于0xFD的字節(jié)時(shí),這個(gè)字節(jié)將被編譯器刪除,從而最終程序代碼的運(yùn)行錯(cuò)誤。

解決方法有以下種:
1,官方提供的方法是:遇到無法顯示字符時(shí)在其后加\xFD
如 :unsignedchar code s[]="數(shù)學(xué)"; 改為 unsignedchar code s[]="數(shù)\xFD學(xué)"; 即可正常顯示。

2,將keil\c51\BIN\目錄下的C51.exe直接拖進(jìn)本軟件修復(fù)

3,使用十六進(jìn)制編輯器打開C51.exe,查找80 FB FD 0F ,修改成80 FB FF 0F保存




全部資料51hei下載地址:
最新keil c51 0xFD修復(fù).zip (328.52 KB, 下載次數(shù): 294)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:52896 發(fā)表于 2020-2-15 20:42 | 只看該作者
感謝分享,正需要,下載來看看使用正常不
回復(fù)

使用道具 舉報(bào)

板凳
ID:627942 發(fā)表于 2022-7-22 18:55 | 只看該作者
老是報(bào)警擴(kuò)展名錯(cuò)誤,不能用.
回復(fù)

使用道具 舉報(bào)

地板
ID:911455 發(fā)表于 2022-8-23 14:47 | 只看該作者
snso666 發(fā)表于 2022-7-22 18:55
老是報(bào)警擴(kuò)展名錯(cuò)誤,不能用.

ME TOO
回復(fù)

使用道具 舉報(bào)

5#
ID:155507 發(fā)表于 2025-6-22 09:28 | 只看該作者
關(guān)于 Keil 軟件中 0xFD 問題的說明
眾所周知,Keil 軟件的 8051 和 80251 編譯器的所有版本都有一個(gè)叫做 0xFD 的問題,主要表現(xiàn)在字
符串中不能含有帶 0xFD 編碼的漢字,否則 Keil 軟件在編譯時(shí)會(huì)跳過 0xFD 而出現(xiàn)亂碼。
關(guān)于這個(gè)問題,Keil 官方的回應(yīng)是:0xfd、0xfe、0xff 這 3 個(gè)字符編碼被 Keil 編譯器內(nèi)部使用,所
以代碼中若包含有 0xfd 的字符串時(shí),0xfd 會(huì)被編譯器自動(dòng)跳過。
Keil 官方提供的解決方法:在帶有 0xfd 編碼的漢字后增加一個(gè) 0xfd 即可。例如:
printf("數(shù)學(xué)"); //Keil 編譯后打印會(huì)顯示亂碼
printf("數(shù)\xfd 學(xué)"); //顯示正常
這里的“\xfd”是標(biāo)準(zhǔn) C 代碼中的轉(zhuǎn)義字符,“\x”表示其后的 1~2 個(gè)字符為 16 進(jìn)制數(shù)!癨xfd”表
示將 16 進(jìn)制數(shù) 0xfd 插入到字符串中。
由于“數(shù)”的漢字編碼是 0xCAFD,Keil 在編譯時(shí)會(huì)將 FD 跳過,而只將 CA 編譯到目標(biāo)文件中,后
面通過轉(zhuǎn)義字符手動(dòng)再補(bǔ)一個(gè) 0xfd 到目標(biāo)文件中,就形成完整的 0xCAFD,從而可正常顯示。
關(guān)于 0xFD 的補(bǔ)丁網(wǎng)上有很多,基本只對(duì)舊版本的 Keil 軟件有效。打補(bǔ)丁的方法均是在可執(zhí)行文件
中查找關(guān)鍵代碼[80 FB FD],并修改為[80 FB FF],這種修改方法查找的關(guān)鍵代碼過于簡(jiǎn)單,很容易修改
到其它無關(guān)的地方,導(dǎo)致編譯出來的目標(biāo)文件運(yùn)行時(shí)出現(xiàn)莫名其妙的問題。所以,代碼中的字符串有包
含如下的漢字時(shí),建議使用 Keil 官方提供的解決方法進(jìn)行解決
GB2312 中,包含 0xfd 編碼的漢字如下:
褒餅昌除待諜洱俘庚過糊積箭燼君魁
例籠慢謬凝琵訖驅(qū)三升數(shù)她聽妄錫淆
旋妖引育札正鑄 佚冽邶埤犖蔟摭啐
幘獫愷泯潺嫗紈琮槧輦挲臊忑睚銓稞
瘕頎螨籪酏觚鳊鼾
另外,Keil 項(xiàng)目路徑名的字符中也不能含有帶 0xFD 編碼的漢字,否則 Keil 軟件會(huì)無法正確編譯此
項(xiàng)目。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表