クロックがCR発振の4.8Mhzという半端なクロックなので、ボーレートの算出が難しい。文字化けが解消しない。当所の標準ボーレート38.4kbpsではどうしても合わず、9600bpsへ落とす。落ち着いた(クロックがCRだと38.4kbpsは無理だとあとで気が付いた)。パルス検出のルーチンを次に組み込む。ChaNさんの電波時計デコードルーチンのソースにならって、焦電センサーもタイマーのサンプリング方式でロジックを組む。ベタにパルスの立ち上がりを待つのでなく、一定の時間間隔(13.3ms)でパルスの状態を見てやれば、ついでにチャタリングなどのノイズを除去できる。ロジックは、仕事の行き帰りなどの空き時間を使って、既に構想は出来ていた。フラグを2つ使って、サンプリングの3つの状態を時系列で調べる。100(0がパルス検出)のとき始めてパルスがあったと判定するロジックだ。101や、00、01、11のときは何もしない。I/Oポートの調整でトラブル解消(8/25/2012)パルス検出ルーチンは、いつものように擬似コードで何度もロジックを確かめながら、C言語のコードに換えていく。検知してからのタイムアウトは常にタイマーを加算しておいて、パルスを発見できなければループのあと常に0に戻し、パルスが出てスイッチが入った後は、タイマーをリセットしないというロジックだ。これでタイムアウトが検出できるはずである。コードは800バイト余り。