keilc51汉字显示的bug问题

keilc51汉字显示的bug问题

ID:8871377

大小:17.50 KB

页数:3页

时间:2018-04-10

keilc51汉字显示的bug问题_第1页
keilc51汉字显示的bug问题_第2页
keilc51汉字显示的bug问题_第3页
资源描述:

《keilc51汉字显示的bug问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、KeilC51汉字显示的bug问题(0xFD问题)KeilC51汉字显示的bug问题       一、缘起              这两天改进MCU的液晶显示方法,采用“即编即显”的思路,编写了一个可以直接显示字符串的程序。如程序调用disstr("我是你老爸");液晶屏上就会显示“我是你老爸”。     二、问题         但是,花了1天多时间辛辛苦苦改好的程序后,却发现有些汉字显示有问题。比如:         P1:在第一行显示“实时参数”,第二行显示“工作状态”,实际上“工作状态”却重复显示了,除了在正确的地方显示外,还在

2、“实时参数”后显示了。         P2:"正"字后若有":",则都显示成乱码。如果后面没有":",则"正"字可正确显示,但是后面却显示了后面的一行字。         P3:"过"字总显示乱码;     三、求索              通过调试发现,上述汉字显示不正常的时候,是因为在字库中找不到匹配的汉字。可是,自建的字库中明明有这些汉字,而且"数","正"字在后面无字符的时候是显示正确的啊!         问题找了好久,怀疑传参类型不对,汉字查找可能溢出等,反复修改,总是无法解决问题,而且从现象来思考,都不应该是这些问题。 

3、        今日灵光一现:为什么不在传递字符串后显示该字符串的变量值呢?              经过详细研究,西文字符在传递时应该是ACSII值,一个字节,数值小于128;而汉字传递的是其机内码,分高低2个字节,2个字节都大于127,当然并小于256。         字符串传递参数值一显示,可不得了。其惊人之处有:              1."数","正","过"正确显示时其传参值为:0xca00,0xd500,0xb900;而其正确的机内码应该是:0xcafd,0xd5fd,0xb9fd。看来其低位字节被无情忽视。    

4、     2."数","正","过"单独显示正确,但是后面带一个字符或汉字就显示乱码了。如"正:"传参的值为:0xd53a,0x0000;"数     "传参的值为:0xca20,0x0000。而":"和"     "的ASCII值恰好是0x3a,0x20,看来这几个汉字是叛变到西文字符中去了,机内码只有一个高位字节了。         3.将传参值直接赋给汉字显示函数,如"过"用"0xb9,0xfd"是显示不了的,只能用"0xb9,0x00"。         4.比较发现,显示不正常的"数","正","过"三个字的低位字节都是0xfd

5、,而一直显示正确的"一二"等汉字机内码的低位字节都不是0xfd。         莫非keil跟0xfd有不共戴天之仇?     四、解决         天涯茫茫寻不到,无奈只有上百度。用"keil     c51的汉字显示问题"一搜就找到组织了,泪奔啊。组织的力量大,很快就给出了让我这等底层开发者劳累辛苦的原因:这是万恶的keil存在的一个臭名昭著的bug!伟大的组织同时无私的提供了答案,而且还不止一种哦。以下是从某同志的blog中摘录:         “解决方法两个:          ①下个晓奇工作室出的补丁,自己搜一下。(ht

6、tp://www.xiao-qi.com/mcu/)          ②用十六进制编辑软件如HexEdit打开c51.exe,搜索80FBFD,改为80FBFF即可。                        c51.exe位置:Keil安装目录/keil/c51/bin/c51.exe”         赶紧拿起前辈们提供的武器,向keil0xfdbug发起猛烈冲锋!……         待我重新烧录好程序,轻轻的打开电源,液晶屏幕上的一个个汉字显示得整齐而又干净,整个世界清静了…………            本文来自CSDN博客

7、,转载请标明出处:http://blog.csdn.net/willhu2008/archive/2009/08/25/4482487.aspxKeil过滤0xfd字符的bug的修正keilc51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤,而导致程序出错.特别是在做液晶汉字 显示时.针对这个bug.由网友编写了这个补丁.请下载之后放到你的keilc51bin目录里,运行这个程序.就可 以了.支持v8.02去晓奇网站上下个补丁程序运行下即可这么多年了,Keil还是有这个Bug,而且晓奇做的哪个补丁程序也不错,这么多年了

8、都还能适用:-)相关链接:http://www.xiao-qi.com直接用Uedit打开需要修改的文件,将对应的0xFD修改成0xFF就可例如,对于51编译器,那么用Uedit打开C51/B

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。