De dar em doido com o seguinte código

Boas,

E algo assim gostas mais ?

byte aRX_Trama[18]   = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void rx_trama()// (byte *trama)
{
byte cpt, i = 0; 
byte checksum = 0;
static byte cpt_erro =0;

      if (Serial.available() > 17 ) 
       {
//-----------------------------------------------------------------------             
            for (cpt = 0; cpt < 18; cpt ++ )
             {
               aRX_Trama[cpt] = Serial.read();
             
             }
//-----------------------------------------------------------------------             
             // calcula checksum - XOR 
             for (i = 4; i < 16; i ++ )
             {               
               checksum ^= aRX_Trama[i];
             }
             
//-----------------------------------------------------------------------
                
                //Serial.println ("DEBUG fdx");               
                //Serial.println (checksum, HEX);
                  
                   if( checksum == aRX_Trama[17] && aRX_Trama[17] > 0) //testa se o checksum é valido 
                   {
                    // Serial.print("\n\r DEBUG - CRC"); 
                     trama_OK = true;
                     cpt_erro = 0;                                     
                     return 1;   
                   }       
                    else
                      {                                                 
                        cpt_erro ++;
                        
                          if ( cpt_erro > 30)
                           {
                            Serial.print ("\n\r DEBUG cpt_erro  -> ");  
                            Serial.print (cpt_erro);  
                            Serial.println ("");  
                            limpa_buffer_rs232();
                            trama_OK = false;
                            cpt_erro =0;
                            return 0; 
                           }
                     }
                 
       } 
         
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                  LIMPAR / ESVAZIAR BUFFER RS232
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void limpa_buffer_rs232()
{

 unsigned char temp = Serial.available(); 

    for (int i = temp; i >=0; i--) 
    {
     Serial.read();
    }
 }

PS: este código compila sem erros mas não o testei na realidade.