ライントレースということですから、マイクロマウスのようなもの でしょうか? 床面に貼られた反射テープなどをアナログの光 センサでテープ左右のエッジを検出し、2つの光センサの値が うまくバランスさせるように走行させようと思われているのかと 思います。(マイクロマウスって今は死語?かな) 始めて読まれる方もいるので、装置の概要と動作原理などを 記してくれれば皆さんレスしやすいかと思います。 ソースはざっと見ました。見たと言ってもレジスタの設定値を一つ 一つ追っかけて見ている訳ではありません。全体の流れと、コメン トを中心に眺めているだけです。 締め切りが迫ってくると、視野が狭くなり自分で作ったプログラム が見えなくなるものです。これは経験豊富です(^^;; そんなときは、自分の考えていることを他人に説明してみて下さい。 大抵の場合説明の途中で自分の勘違いに気付くことが多いです。 気のついた点として、 1)for文中で1000回ループさせていますが、その中に1度設定すれ ば良いレジスタが幾つか含まれていますが、繰り返し設定をする 必要はありますか?(間違いではないが、無駄かと思います) 2)同様に同じ設定を連続で繰り返す部分があるが誤記? 3)1000回のfor文を抜けた後、無限ループになっているが、デバッグ のため? 4)ざっと見た限りでは後半のif〜else文のところで、条件不足なので はないか? >AN0が20より小さかったら右モータを早く回転させ、 >AN2が20より小さかったら左モータを早く回転させ、 >AN1が20より小さかったら二つのモータを同じ回転数で回すという 作ったif文が、その他に起こり得る条件を全て満たしていますか? 一番簡単なデバッグ方法として、評価したい変数AN0,AN2,AN1の 条件をA/D変換の値を使わずにプログラムに固定して、そのときに どのif文が実行され最終的な値がどうなるかをprintfで吐き出させて 見て下さい。 このような複雑な条件を処理するばあいは、switch文の方が判り 易いかと思います。 鈴木