printf(), sprintf(), fprintf()で下記の例の様に printf("測定開始時刻:トリガ時刻:987654321")等を使用したコードをコンパイルした結果の HEXファイルにおいて2バイト文字で上位8ビット、又は、下位8ビットに0x8A が含まれますと無条件に0x0Aに 書き換えてしまいます。 CCC Cコンパイラ・バージョン5.100で関数で2バイト文字を使うと0x8Aが0x0Aに化ける問題が解決されました! 5.100以降の統合環境では#includeの次の行、ヒューズの前に#device KEEP8Aと 書く事でprintf()やfprintf()、sprintf()の中に、例えば、printf("測定開始時刻:トリガ時刻:987654321" と言う様な漢字コード中に0x8Aが含まれる文字を書いても化けなくなりました。 例: #include <16f887.h> #device KEEP8A #fuses HS,NOLVP,NOWDT と言う行を追加すると、printf()やfprintf()、sprintf()の中に、0x8Aを含む 2バイト文字、たとえば、"計測開始時間="と言う様な漢字コード中に 0x8Aが含まれる文字(開=0x8A4A)等を書いても化けなくなりました。 *それまでは、0x8A4A → 0x0A4Aと書き換えられていました。 ※これは英語では0x8Aは改行コードなので0x0Aに書き換えているため避けがたい事情でした。