标题: 最新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保存
全部资料51hei下载地址:
最新keil c51 0xFD修复.zip
(328.52 KB, 下载次数: 294)
作者: 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://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |