Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Thu Feb 25 06:12:47 2016 +0000
Revision:
45:c23f25c00d0d
Parent:
16:6900f47fa0b5
Hokushinetsu(20:1)

Who changed what in which revision?

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