#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) { /* 命令80を発行 */ 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; /* 6バイト受信 */ 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を消灯 */ } } }