せとうちオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun May 01 06:30:37 2016 +0000
Revision:
0:b910276f9da2
from 2v10

Who changed what in which revision?

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