この手の処理は1ms以下のタイマ割り込み内で
I/Oポートをポーリングするのが一番すっきりしているのではないかな。