ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
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 }
Generated on Wed Jul 13 2022 02:59:03 by 1.7.2