おいちゃんのおぼえがき

仕事のTipsをメモするブログ

H8 IOポートの入出力切り替え

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