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

Dependencies:   mbed AQM1602 HMC6352 PID

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers txrx.cpp Source File

txrx.cpp

00001 #include "mbed.h"
00002 #include "txrx.h"
00003 #include "def.h"
00004 
00005 #include "extern.h"
00006 
00007 void cls() {
00008     for(int i=0;i<DATA_NUM;i++) INdata[i]=0;
00009 }
00010 void TX(void){//送信バッファ空き割り込み用関数
00011     
00012     static uint8_t Tx=DATA_NUM, i;
00013     static uint8_t TXdata[DATA_NUM]={TX_KEYCODE};
00014     static uint8_t TXcheckcode=0;
00015     
00016     if(Tx >= DATA_NUM){
00017         
00018         TXdata[KEY] = TX_KEYCODE;//Hello.
00019         
00020         TXdata[1] = EXdata[1];
00021         TXdata[2] = EXdata[2];
00022         TXdata[3] = EXdata[3];
00023         TXdata[4] = EXdata[4];
00024         TXdata[5] = EXdata[5];
00025         TXdata[6] = EXdata[6];
00026         TXdata[7] = EXdata[7];
00027         TXdata[8] = EXdata[8];
00028         //送信するデータ = メインで処理されたデータ
00029         
00030         for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成
00031             TXcheckcode ^= TXdata[i];
00032         }
00033         
00034         TXdata[CHECK] = TXcheckcode;//Good bye.
00035         Tx=0;//配列をリセット
00036         
00037     }
00038     RN42.putc(TXdata[Tx]);//データを送信する
00039     Tx++;//配列を入れ替える
00040     
00041 }
00042 void RX(void){//受信割り込み用関数
00043 
00044     static uint8_t Rx=0, i;
00045     static uint8_t RXdata[DATA_NUM]={RX_KEYCODE};
00046     static uint8_t RXcheckcode=0;
00047     
00048     RXdata[Rx] = RN42.getc();//データを受け取る
00049     
00050     if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える
00051         Rx++;
00052     }
00053     
00054     if(Rx==CHECK){//CHECKCODEの生成
00055         for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){
00056             RXcheckcode ^= RXdata[i];
00057         }
00058     }
00059     
00060     if(Rx >= DATA_NUM){
00061         if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する
00062             
00063             Stp.attach(&cls, .5);
00064             INdata[1] = RXdata[1];
00065             INdata[2] = RXdata[2];
00066             INdata[3] = RXdata[3];
00067             INdata[4] = RXdata[4];
00068             INdata[5] = RXdata[5];
00069             INdata[6] = RXdata[6];
00070             INdata[7] = RXdata[7];
00071             INdata[8] = RXdata[8];
00072             //メインで処理されるデータ = 受け取ったデータ
00073             
00074         }
00075         Rx=0;//配列をリセット
00076     }
00077     
00078 }