第十章 ロボットサッカーにチャレンジ


10-1-1 受信モジュールの出力の模擬

ポートCのbit0を出力にしています。理由はありません。どこでもいいです。
クロックモジュール(セラロック)は20MHzを用います。後で赤外線を受信して距離を求める装置を作りますが、そのチェック用だと思ってください。

IrBallTest
#define true 1
sbit IrOut at PORTC.B0;

void main() {
  int i;
  PORTC = 0xff;
  TRISA = 0x00;              // PORTAを出力にする
  TRISB = 0xff;              // PORTBを入力にする
  TRISC = 0x00;              // PORTCを出力にする
  ANSEL = 0x00;              // アナログ入力をOFF
  ANSELH = 0x00;             // アナログ入力をOFF
  OPTION_REG = 0;            // prescalerTMR0RATE=1:2(1μs)
  OPTION_REG.T0CS = 0;       // internal clock(Fosc(8MHz)/4)
  while(true)
  {
    for(i=0; i<1000; i++){
      IrOut = 0;
      Delay_us(200);
      IrOut = 1;
      Delay_us(633);
    }
    for(i=0; i<1000; i++){
      IrOut = 0;
      Delay_us(300);
      IrOut = 1;
      Delay_us(533);
    }
    for(i=0; i<1000; i++){
      IrOut = 0;
      Delay_us(400);
      IrOut = 1;
      Delay_us(433);
    }
    for(i=0; i<1000; i++){
      IrOut = 0;
      Delay_us(500);
      IrOut = 1;
      Delay_us(333);
    }
  }
}
 1 
 2 ポートCのbit0をIrOutという名前で登録
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 ここでは関係が無い
13 ここでは関係が無い
14 無限ループ
15 パルスの周期は833μsになるようにする
16
17
18 200μs幅のパルスを1000回作る
19
20
21 
22
23
24 300μs幅のパルスを1000回作る
25 
26
27
28
29
30 400μs幅のパルスを1000回作る
31
32
33 
34 
35 
36 500μs幅のパルスを1000回作る
37 
38 
39 
40 
41 

実行結果のオシロスコープ表示の例
横軸1メモリが400μs、縦軸1メモリが2Vです。PICの電源電圧は3.3Vを用いています。この例では約500μ秒のパルスになっています。負パルスであることに注意してください。


第一章に行く    ホームに戻る