---新しい開発環境(3)---

 新しい環境で、諸兄の書いてくれたシリアル通信のプログ
 ラムを自分の環境で実現するべくもがいていました。
 コンパイルはすんなり通るのに思った動作をしてくれません。
 全部疑って、一つ一つつぶして、やっと思うような動作ができ
 るようになりました。
 まず、はまったのが、デバックのために、プログラムの間に
 書き込んだ書式です。
     int count=1000;
     RA0=1;
     RA1=0;
     while(count>0){count--;}
     count=1000;
     RA0=0;
     RA1=1;
     while(count>0){count--;}
 LEDが交互に点滅するはずですが、RA1に当てはまるLED
 の変化がありません。
 もしやと思い
        PORTA=0b00000001;
        PORTB=0b00000000;
        ・・・・・・・・・・・・・・・・・・・
        ・・・・・・・・・・・・・・・・・・・
        
        PORTA=0b00000000;
        PORTB=0b00000001;
 のように変更したら動きました。「RA」の表記では、ポート
 全体の値を書き換えてしまってるようでした。
 よく見てみるとポートのビットの操作の記述が変更に変更に
 なってました。
      RA1→→PORTAbits.RA1
 のように書かないとだめでした。    
 次にはまったのが、外部オシレーターの使用でした。
 これは、デバックの方法の手落ちでした。外部オシレーター
 でプログラムがうまく動いているのか確かめるのに、LEDの
 点滅プログラムを挿入しましたが、ウエイトタイムが短くて
 点灯しっぱなしで、うまく動いてないように見えてしまいま
 した。何回、書き直したことか。
 丸一日かかって、諸兄のプログラムの再現ができました。

 

 PICのUART機能を使って、PCからのキー入力を
 エコーバックするプログラムです。
 それから、とんでもないミスをしてました。RXとTXのピンアサ
 インを私の教科書(キットで遊ぼう電子回路シリーズNo9)で
 確認しながらしてましたが、これが間違いでした。
 教科書のPICは、16F627AというPICで、今回使ったのは、
 16F88というPICでした。同じ18ピンのICなので、同じだろう
 たたかをくっくってたのが間違いでした。なんと、
    16F627
       TX--8ピン(RB2)
       RX--7ピン(RB1)
    16F88
       TX--11ピン(RB5)
       RX-- 8ピン(RB2)
 なんと、TXとRXが入れ替わってました。これでは、動きません
 ね。やはり、データシートみないとだめなんですねえ。