|
初学单片机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的都是这毛病,都这样解决!褒 饼 昌 除 待 谍 洱 俘庚过
糊 积 箭 烬 君 魁 例 笼慢谬
凝 琵 讫 驱 三 升 数 她听妄
锡 淆 旋 妖 引 育 札正铸
佚 冽 邶 埤 荦 蔟 摭 啐帻猃
恺 泯 潺 妪 纨 琮 椠 辇挲臊
忑 睚 铨 稞 瘕 颀 螨 簖酏觚
鳊鼾
发出来此贴,与大家共享。 |
|