H8 (3052F) で、実行中に IO ポートの入出力方向を切り替える場合、DDR レジスタは書込み専用で読み出しには常に 1 が読まれるため、ビット演算子を使って操作すると意図しない結果になる。
たとえば、ポート A の BIT5 を出力にする場合、次のように書くと、
PA.DDR |= 0x20;
BIT5 をたてる前に ReadModifyWrite で DDR が読み出されるが、このとき 0xFF が読まれるため、結果として PA.DDR には 0xFF が書かれてしまう。
変数を1つ割り当てておいて、そこでビット操作し結果だけを書き込むようにすること。 . . . 本文を読む