ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun Mar 27 13:04:39 2016 +0000
Revision:
38:67bc78f3c0ab
Parent:
0:ea35c18c85fc
JapanSoccerOpen2016 CatPot Program(main)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:ea35c18c85fc 1 #include "mbed.h"
lilac0112_1 0:ea35c18c85fc 2 #include "txrx.h"
lilac0112_1 0:ea35c18c85fc 3 #include "def.h"
lilac0112_1 0:ea35c18c85fc 4
lilac0112_1 0:ea35c18c85fc 5 #include "extern.h"
lilac0112_1 0:ea35c18c85fc 6
lilac0112_1 0:ea35c18c85fc 7 void cls() {
lilac0112_1 0:ea35c18c85fc 8 for(int i=0;i<DATA_NUM;i++) INdata[i]=0;
lilac0112_1 0:ea35c18c85fc 9 }
lilac0112_1 0:ea35c18c85fc 10 void TX(void){//送信バッファ空き割り込み用関数
lilac0112_1 0:ea35c18c85fc 11
lilac0112_1 0:ea35c18c85fc 12 static uint8_t Tx=DATA_NUM, i;
lilac0112_1 0:ea35c18c85fc 13 static uint8_t TXdata[DATA_NUM]={TX_KEYCODE};
lilac0112_1 0:ea35c18c85fc 14 static uint8_t TXcheckcode=0;
lilac0112_1 0:ea35c18c85fc 15
lilac0112_1 0:ea35c18c85fc 16 if(Tx >= DATA_NUM){
lilac0112_1 0:ea35c18c85fc 17
lilac0112_1 0:ea35c18c85fc 18 TXdata[KEY] = TX_KEYCODE;//Hello.
lilac0112_1 0:ea35c18c85fc 19
lilac0112_1 0:ea35c18c85fc 20 TXdata[1] = EXdata[1];
lilac0112_1 0:ea35c18c85fc 21 TXdata[2] = EXdata[2];
lilac0112_1 0:ea35c18c85fc 22 TXdata[3] = EXdata[3];
lilac0112_1 0:ea35c18c85fc 23 TXdata[4] = EXdata[4];
lilac0112_1 0:ea35c18c85fc 24 TXdata[5] = EXdata[5];
lilac0112_1 0:ea35c18c85fc 25 TXdata[6] = EXdata[6];
lilac0112_1 0:ea35c18c85fc 26 TXdata[7] = EXdata[7];
lilac0112_1 0:ea35c18c85fc 27 TXdata[8] = EXdata[8];
lilac0112_1 0:ea35c18c85fc 28 //送信するデータ = メインで処理されたデータ
lilac0112_1 0:ea35c18c85fc 29
lilac0112_1 0:ea35c18c85fc 30 for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成
lilac0112_1 0:ea35c18c85fc 31 TXcheckcode ^= TXdata[i];
lilac0112_1 0:ea35c18c85fc 32 }
lilac0112_1 0:ea35c18c85fc 33
lilac0112_1 0:ea35c18c85fc 34 TXdata[CHECK] = TXcheckcode;//Good bye.
lilac0112_1 0:ea35c18c85fc 35 Tx=0;//配列をリセット
lilac0112_1 0:ea35c18c85fc 36
lilac0112_1 0:ea35c18c85fc 37 }
lilac0112_1 0:ea35c18c85fc 38 RN42.putc(TXdata[Tx]);//データを送信する
lilac0112_1 0:ea35c18c85fc 39 Tx++;//配列を入れ替える
lilac0112_1 0:ea35c18c85fc 40
lilac0112_1 0:ea35c18c85fc 41 }
lilac0112_1 0:ea35c18c85fc 42 void RX(void){//受信割り込み用関数
lilac0112_1 0:ea35c18c85fc 43
lilac0112_1 0:ea35c18c85fc 44 static uint8_t Rx=0, i;
lilac0112_1 0:ea35c18c85fc 45 static uint8_t RXdata[DATA_NUM]={RX_KEYCODE};
lilac0112_1 0:ea35c18c85fc 46 static uint8_t RXcheckcode=0;
lilac0112_1 0:ea35c18c85fc 47
lilac0112_1 0:ea35c18c85fc 48 RXdata[Rx] = RN42.getc();//データを受け取る
lilac0112_1 0:ea35c18c85fc 49
lilac0112_1 0:ea35c18c85fc 50 if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える
lilac0112_1 0:ea35c18c85fc 51 Rx++;
lilac0112_1 0:ea35c18c85fc 52 }
lilac0112_1 0:ea35c18c85fc 53
lilac0112_1 0:ea35c18c85fc 54 if(Rx==CHECK){//CHECKCODEの生成
lilac0112_1 0:ea35c18c85fc 55 for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){
lilac0112_1 0:ea35c18c85fc 56 RXcheckcode ^= RXdata[i];
lilac0112_1 0:ea35c18c85fc 57 }
lilac0112_1 0:ea35c18c85fc 58 }
lilac0112_1 0:ea35c18c85fc 59
lilac0112_1 0:ea35c18c85fc 60 if(Rx >= DATA_NUM){
lilac0112_1 0:ea35c18c85fc 61 if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する
lilac0112_1 0:ea35c18c85fc 62
lilac0112_1 0:ea35c18c85fc 63 Stp.attach(&cls, .5);
lilac0112_1 0:ea35c18c85fc 64 INdata[1] = RXdata[1];
lilac0112_1 0:ea35c18c85fc 65 INdata[2] = RXdata[2];
lilac0112_1 0:ea35c18c85fc 66 INdata[3] = RXdata[3];
lilac0112_1 0:ea35c18c85fc 67 INdata[4] = RXdata[4];
lilac0112_1 0:ea35c18c85fc 68 INdata[5] = RXdata[5];
lilac0112_1 0:ea35c18c85fc 69 INdata[6] = RXdata[6];
lilac0112_1 0:ea35c18c85fc 70 INdata[7] = RXdata[7];
lilac0112_1 0:ea35c18c85fc 71 INdata[8] = RXdata[8];
lilac0112_1 0:ea35c18c85fc 72 //メインで処理されるデータ = 受け取ったデータ
lilac0112_1 0:ea35c18c85fc 73
lilac0112_1 0:ea35c18c85fc 74 }
lilac0112_1 0:ea35c18c85fc 75 Rx=0;//配列をリセット
lilac0112_1 0:ea35c18c85fc 76 }
lilac0112_1 0:ea35c18c85fc 77
lilac0112_1 0:ea35c18c85fc 78 }