今天遇到一个关于keil很高级的问题(汉字“三”不能正常显示问题)
初学单片机c语言编程,正在做一个基于89c51和12c887的时钟,用12864显示年月日时间和星期,基本已经做好了,年月日时间显示都正常,星期显示有问题,星期的设计显示方案是“星期一”、“星期二”、”星期三”。。。。到星期日,实际运行出现了问题,具体表现是:星期一、二显示正常,到星期三时,那个三字竟然变成了”人“字,后面的四五六日也都成了乱码了,查汉字编码,三是c8fd,四是cbc4,五是cee5,人是c8cb,星期数组的语句是:uchar code table[]="一二三四五六日”,每个汉字两个字节,写数据都是写两次,例如“一”的写法是:write_data(1*2-2); write_data(1*2-1);对应数组中的0、1字节,使用keil的仿真单步运行程序写汉字“三”,发现第一次写的是0xc8,正确,第二次写的却是0xcb,是汉字“四”的高位字节,三在数组中对应4、5字节,实际显示的却是4、6字节,正好是个人字!第5个字节0xfd哪里去了?问了问百度还真有答案,说keil处理汉字时遇见0xfd就自动忽略了云云,解决办法是在三后加上\xfd就行了,例如uchar code table[]="一二三四五六日”,写成uchar code table[]="一二三\xfd四五六日”,测试ok!还有很多低位是0xfd的都是这毛病,都这样解决!褒 饼 昌 除 待 谍 洱 俘庚过糊 积 箭 烬 君 魁 例 笼慢谬
凝 琵 讫 驱 三 升 数 她听妄
锡 淆 旋 妖 引 育 札正铸
佚 冽 邶 埤 荦 蔟 摭 啐帻猃
恺 泯 潺 妪 纨 琮 椠 辇挲臊
忑 睚 铨 稞 瘕 颀 螨 簖酏觚
鳊鼾
发出来此贴,与大家共享。 好像记得很多年前就有一个小奇补丁 搜“keil 0xFD补丁” 学习了,这个是要补丁的 加补丁很麻烦,最简单的方法就是官方的做法:直接在那个字后面加上“\xfd"就行了! hccy 发表于 2018-4-26 15:59
加补丁很麻烦,最简单的方法就是官方的做法:直接在那个字后面加上“\xfd"就行了!
各有所长。
加\XFD 有时也是麻烦的,容易漏掉。
打补丁就一劳永逸,但是有风险(虽然很低)。
:handshake
页:
[1]