熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2010-7-21 22:56
正文摘要:這是我在本論壇的51hei-5開發(fā)板上寫的一個(gè)程序,想在12864上顯示:一二三四五六七,可是總是出現(xiàn)這樣的亂碼,請(qǐng)各位大哥看看,謝謝了,十分感謝!!! #include<reg52.h> #include <intrins.h> #def ... |
|
http://m.raoushi.com/bbs/dpj-130470-1.html 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ò)誤。 |
| 謝謝分享支持一下 |
|
關(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)目。 |
| 跪謝 已解決 大神牛逼 |
| 學(xué)習(xí)了,我就說為什么我的漢字一直顯示出錯(cuò)。 |
hp34401a 發(fā)表于 2018-5-26 09:52 清測(cè)有效,Keil版本V952 |
|
也發(fā)現(xiàn)這個(gè)問題了。 臨時(shí)解決的辦法:把漢字編碼的2個(gè)字節(jié),單獨(dú)寫到數(shù)組。 比如: mystr[0] = 0xCA; // '數(shù)'的GBK內(nèi)碼: 0xcafd --> 因keil編譯有錯(cuò)誤,所以用hex方式 mystr[1] = 0xFD; 不過這個(gè)只能算補(bǔ)救方法。 |
| 不錯(cuò),測(cè)試OK |
hp34401a 發(fā)表于 2018-5-26 09:52 感謝分享,這個(gè)的確好用,解決了困擾我很久的問題。 |
| 用keil在使用漢字時(shí)有時(shí)會(huì)出現(xiàn)顯示亂碼,官方說明是有些漢字內(nèi)碼包含0xfd,可以通過加在該漢字后加0xfd解決,不過很麻煩,有了0xfd補(bǔ)丁就可以很好的解決這個(gè)問題。 |
hp34401a 發(fā)表于 2018-5-26 09:52 謝謝樓主,現(xiàn)在顯示正常了。 |
51hei圖片_20220119185337.jpg (122.23 KB, 下載次數(shù): 369)
20220120171010.jpg (137.13 KB, 下載次數(shù): 325)
| 我的這個(gè)好像不行,還是亂碼。 |
“正”字遇到了這個(gè)問題,都2021年了,這個(gè)問題還是存在![]() |
| 昨天出現(xiàn)了這個(gè)情況,用這個(gè)補(bǔ)丁解決了問題,謝謝樓主了 |
hp34401a 發(fā)表于 2018-5-26 09:52 測(cè)試可用,早發(fā)現(xiàn)這個(gè)補(bǔ)丁就好了 |
| 謝謝你,剛剛執(zhí)行了,秀出成功的信息。 |
十分感謝,新KEIL C51 0XFD補(bǔ)丁很好用,舊版在我這里沒有用,新版的可以。![]() |
admin 發(fā)表于 2010-7-22 04:45 我整了一下午了,我就沒想到是編譯器的問題,淦,感謝感謝 |
| 感謝大佬,雖然我來晚了10年。這個(gè)真的是聽君一席話,勝讀十年書。 |
| 感謝感謝,我也碰三顯示不出來的問題了,昨晚弄了一個(gè)晚上,打了補(bǔ)丁當(dāng)場(chǎng)好了。 |
| 感謝你的無私,我今天也碰到亂碼了 |
| 還是可以,很棒 |
hp34401a 發(fā)表于 2018-5-26 09:52 多謝多謝 |
| 學(xué)習(xí)KEIL C51 0XFD補(bǔ)丁 |
| 新KEIL C51 0XFD補(bǔ)丁。支持KEIL5 及以下所有版本! |
| 我的頁(yè)無法打補(bǔ)丁啊愛愛愛 |
hp34401a 發(fā)表于 2018-5-26 09:52 新KEIL C51 0XFD補(bǔ)丁。支持KEIL5 及以下所有版本! |
| 在哪呢 |
![]() ![]() 最近在學(xué)習(xí)12864遇到部分漢字顯示亂碼,導(dǎo)致后面所有漢字亂碼。"飛流直下三千尺," “正弦波”(“三”“正”字顯示亂碼。)弄了好久都解決不了,現(xiàn)在終于在這里找到了解決方法。謝謝樓主與各位網(wǎng)友! |
hp34401a 發(fā)表于 2018-5-26 09:52 感謝你的無私,我今天也碰到亂碼了 |
| 昨天下載測(cè)試了,我的keil3問題還是解決不了,今天下載了一個(gè)keil4 |
DSCX05 發(fā)表于 2018-8-18 18:34 下載試試看行不行?我有一個(gè)液晶屏顯示“過”字不行,按照管方解決辦法加\xFD都沒有能解決正常顯示,后在“過”字后加\x00才正常顯示的,后又有一個(gè)“山”字不能正常顯示,字后加什么都不行了,用了修復(fù)補(bǔ)丁也不行,只修復(fù)了“過”字顯示的問題,“山”字的顯示始終不行哎!今天在下載這個(gè)補(bǔ)丁試試看吧! |
hp34401a 發(fā)表于 2018-5-26 09:52 好用。。。。。。 |
|
新KEIL C51 0XFD補(bǔ)丁。支持KEIL5 及以下所有版本! |
keilfdfix2.JPG (53.83 KB, 下載次數(shù): 276)
keil_v5_fixed1.jpg (144.25 KB, 下載次數(shù): 246)
keilfdfix3.JPG (120.68 KB, 下載次數(shù): 197)
VirusTotalA.jpg (193.81 KB, 下載次數(shù): 190)
KeilFDfix_新FD補(bǔ)丁(冠銘同學(xué)版)b7.rar
96.6 KB, 下載次數(shù): 364, 下載積分: 黑幣 -5
sglf0201 發(fā)表于 2015-5-3 14:39 我也這樣 請(qǐng)問怎么解決的呀 |
| keil漢字補(bǔ)丁能否給我份 |
| keil漢字補(bǔ)丁能否給我份 |
admin 發(fā)表于 2010-7-22 04:45 感謝分享 |
| 這個(gè)方法很好用。多謝! |
admin 發(fā)表于 2010-7-22 04:45 為什么我下了補(bǔ)丁仍然顯示亂碼,求大神指教 |
Powered by 單片機(jī)教程網(wǎng)