標題: 最新keil c51 0xFD修復工具下載 [打印本頁]
作者: nnqtdf 時間: 2018-7-31 17:22
標題: 最新keil c51 0xFD修復工具下載
keil c51升級到v9.54后,原來的0XFD修復工具失效了,所有寫了這個小工具。
0XFD問題是keil c51中一直存在的一個問題,表現為當C源代碼中使用了漢字等非ASCII字符,而此字符的編碼又恰好包含了大于或等于0xFD的字節時,這個字節將被編譯器刪除,從而最終程序代碼的運行錯誤。
解決方法有以下種:
1,官方提供的方法是:遇到無法顯示字符時在其后加\xFD
如 :unsignedchar code s[]="數學"; 改為 unsignedchar code s[]="數\xFD學"; 即可正常顯示。
2,將keil\c51\BIN\目錄下的C51.exe直接拖進本軟件修復
3,使用十六進制編輯器打開C51.exe,查找80 FB FD 0F ,修改成80 FB FF 0F保存
0.png (44 KB, 下載次數: 93)
下載附件
2018-7-31 17:36 上傳
全部資料51hei下載地址:
最新keil c51 0xFD修復.zip
(328.52 KB, 下載次數: 294)
2018-7-31 17:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: jingboxu 時間: 2020-2-15 20:42
感謝分享,正需要,下載來看看使用正常不
作者: snso666 時間: 2022-7-22 18:55
老是報警擴展名錯誤,不能用.
作者: innere 時間: 2022-8-23 14:47
ME TOO
作者: angmall 時間: 2025-6-22 09:28
關于 Keil 軟件中 0xFD 問題的說明
眾所周知,Keil 軟件的 8051 和 80251 編譯器的所有版本都有一個叫做 0xFD 的問題,主要表現在字
符串中不能含有帶 0xFD 編碼的漢字,否則 Keil 軟件在編譯時會跳過 0xFD 而出現亂碼。
關于這個問題,Keil 官方的回應是:0xfd、0xfe、0xff 這 3 個字符編碼被 Keil 編譯器內部使用,所
以代碼中若包含有 0xfd 的字符串時,0xfd 會被編譯器自動跳過。
Keil 官方提供的解決方法:在帶有 0xfd 編碼的漢字后增加一個 0xfd 即可。例如:
printf("數學"); //Keil 編譯后打印會顯示亂碼
printf("數\xfd 學"); //顯示正常
這里的“\xfd”是標準 C 代碼中的轉義字符,“\x”表示其后的 1~2 個字符為 16 進制數。“\xfd”表
示將 16 進制數 0xfd 插入到字符串中。
由于“數”的漢字編碼是 0xCAFD,Keil 在編譯時會將 FD 跳過,而只將 CA 編譯到目標文件中,后
面通過轉義字符手動再補一個 0xfd 到目標文件中,就形成完整的 0xCAFD,從而可正常顯示。
關于 0xFD 的補丁網上有很多,基本只對舊版本的 Keil 軟件有效。打補丁的方法均是在可執行文件
中查找關鍵代碼[80 FB FD],并修改為[80 FB FF],這種修改方法查找的關鍵代碼過于簡單,很容易修改
到其它無關的地方,導致編譯出來的目標文件運行時出現莫名其妙的問題。所以,代碼中的字符串有包
含如下的漢字時,建議使用 Keil 官方提供的解決方法進行解決
GB2312 中,包含 0xfd 編碼的漢字如下:
褒餅昌除待諜洱俘庚過糊積箭燼君魁
例籠慢謬凝琵訖驅三升數她聽妄錫淆
旋妖引育札正鑄 佚冽邶埤犖蔟摭啐
幘獫愷泯潺嫗紈琮槧輦挲臊忑睚銓稞
瘕頎螨籪酏觚鳊鼾
另外,Keil 項目路徑名的字符中也不能含有帶 0xFD 編碼的漢字,否則 Keil 軟件會無法正確編譯此
項目。
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |