keil C51环境下,液晶某些汉字不显示问题

问题描述:使用keil C51编译环境,带字库液晶.发现有些汉字使用这样语句无法显示: uchar code coun_show1[]={"请输入第一操作数"};其中的汉字"数"将不会显示,而如果用简体中文编码代替以上汉字,如:uchar code coun_show1[]={0xc7,0xeb,0xca,0xe4,0xc8,0xeb,0xb5,0xda,0xd2,0xbb,0xb2,0xd9,0xd7,0xf7,0xca,0xfd};,在液晶屏上汉字"数"是可以显示的.其中,汉字"数"简体中文编码为:0xca,0xfd. 还发现一些汉字,比如"除"(简体中文编码:0xb3,0xfd),"三"(简体中文编码0xc8,0xfd)等,还发现这些不能显示的汉字都有一个共同点:简体中文编码的第二个字节都是0xfd.

 

      这是个很早前遇到的问题,要追溯到我还在大学备战大学生电子竞赛的时候,工作期间又一次遇到这个问题.只是分析出可能是编译器的bug,因为简体中文编码下,液晶是可以显示的,但一直没有得到证实.知道前几天在网上闲逛,看到了一个补丁,才意识到自己当初的猜想是正确的.

 

      原来,这确实是一个编译器bug: keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码,比如汉字"数")过滤, 而导致程序出错.特别是在做液晶汉字显示时.

   

      针对这个bug,有些网友制作了一个补丁,下载之后放到你的keil/c51/bin 目录里,运行这个程序.就可以了. 支持v8.02

 

可以到这个网站下载补丁:http://share.eepw.com.cn/share/download/id/17061

或者到这个网站下载补丁:http://www.cndzz.com/down/soft/39675.htm

 

PS:由于现在主要做ARM,keil c51基本不再使用,所以以上补丁本人没有做过测试.


另外:设置编译器 编码格式

从主菜单依次点击 Edit >> Configuration 中进行修改

0xFD Bug是keil编译器中始终存在,而又从未得到官方修复的一个BUG!!!

BUG描述:当C源代码中使用了汉字等非ASCII字符,而此字符的编码又恰好包含了大于或等于0xFD的字节时,这个字节将被编译器删除,从而最终程序代码的运行错误。


BUG修复方法一:
用十六进制编辑软件打开c51.exe和cx51.exe(这两个文件是相同的,名字不同)
c51.exe位置: Keil安装目录/keil/c51/bin/c51.exe
cx51.exe位置:Keil安装目录/keil/c51/bin/cx51.exe

v905之前的0xfd漏洞修正方法: 

查找    80fbfd56
替换为 80fbff56
v905的0xfd漏洞修正方法
查找    80fbfd0f
替换为 80fbff0f


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值