矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4850|回复: 6

今天遇到一个关于keil很高级的问题(汉字“三”不能正常显示问题)

[复制链接]
     
发表于 2018-4-25 12:59:59 | 显示全部楼层 |阅读模式
初学单片机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的都是这毛病,都这样解决!褒 饼 昌 除 待 谍 洱 俘庚过

糊 积 箭 烬 君 魁 例 笼慢谬

凝 琵 讫 驱 三 升 数 她听妄

锡 淆 旋 妖 引 育 札正铸

佚 冽 邶 埤 荦 蔟 摭 啐帻猃

恺 泯 潺 妪 纨 琮 椠 辇挲臊

忑 睚 铨 稞 瘕 颀 螨 簖酏觚

鳊鼾
发出来此贴,与大家共享。
     
发表于 2018-4-25 13:09:21 | 显示全部楼层
好像记得很多年前就有一个小奇补丁
回复 支持 反对

使用道具 举报

     
发表于 2018-4-25 18:21:25 | 显示全部楼层
搜“keil 0xFD补丁”
回复 支持 反对

使用道具 举报

     
发表于 2018-4-26 10:39:39 | 显示全部楼层
学习了,这个是要补丁的
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-4-26 15:59:20 | 显示全部楼层
加补丁很麻烦,最简单的方法就是官方的做法:直接在那个字后面加上“\xfd"就行了!
回复 支持 反对

使用道具 举报

     
发表于 2018-5-26 11:24:15 | 显示全部楼层
hccy 发表于 2018-4-26 15:59
加补丁很麻烦,最简单的方法就是官方的做法:直接在那个字后面加上“\xfd"就行了!

各有所长。
加\XFD 有时也是麻烦的,容易漏掉。

打补丁就一劳永逸,但是有风险(虽然很低)。

CCKEILVXX-1.jpg
keil_v5_fixed1.jpg

KeilFDfix_新FD补丁(冠铭同学版)b8.zip

95.21 KB, 下载次数: 140

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-5-28 16:25:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 19:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表