#include <3694.h>       /* H8 Tinyの内部I/O定義をインクルード */

/* 送受信用バッファ */
char txb[10], rxb[10];

/* 重心読取命令フォーマット [255][ID][長(1)][命令(80)] */
unsigned char snd_data[4] = {255, 100, 1, 80}; /* 出荷時設定はID=100 */

/* 重心読取結果のフォーマット [255][ID][長(3)][命令(80)][X][Y] */
unsigned char rcv_data[6];

/*-----------------------------------------------*/
/* 重心読取命令発行                              */
/*-----------------------------------------------*/
void read_gravity(void)
{
    /* 命令８０を発行 */
    unsigned char cnt;
    for (cnt = 0; cnt < 4; cnt++){
      SCI3_OUT_DATA(snd_data[cnt]);
    }
}


/*-----------------------------------------------*/
/* メイン                                        */
/*-----------------------------------------------*/
void main(void)
{
  
  /* 通信ポートを初期化 ボーレートは9600[bps] */
  SCI3_INIT (br9600, txb, sizeof(txb), rxb, sizeof(rxb));
  
  /* IO設定 */
  IO.PCR1 = 0x06;
  IO.PDR1.BIT.B1 = 1;   /* LEDを消灯 */
  IO.PDR1.BIT.B2 = 1;   /* LEDを消灯 */

  /* 初期化後はを許可状態に */
  EI;
  
  unsigned long j;
  
  /* RSCが立ち上がるまで待つ */
  for (j = 0; j < 600000; j++);  /* ウェイト（てきとう） */
  for (j = 0; j < 600000; j++);  /* ウェイト（てきとう） */
  
  /* 無限ループ */
  while(1)
  {
    read_gravity();                         /* 重心読取命令発行 */
    for (j = 0; j < 5000; j++);             /* ウェイト（短め、てきとう） */
    int cnt1;                               /* ６バイト受信 */
    for (cnt1 = 0; cnt1 < 6; cnt1++){
        rcv_data[cnt1] = SCI3_IN_DATA ();
    }
    if (rcv_data[4] < (127-20)){
        IO.PDR1.BIT.B1 = 0;
    }else if(rcv_data[4] > (127+20)){
        IO.PDR1.BIT.B2 = 0;
    }else{
        IO.PDR1.BIT.B1 = 1;   /* LEDを消灯 */
        IO.PDR1.BIT.B2 = 1;   /* LEDを消灯 */
    }
  }

}
