Recibir Cadena de Caracteres al Puerto Serial

Hola muy buenas, necesito una pequeña pero gran ayuda.

Verán, estoy diseñando un proyecto de tesis que se trata de un sistema de botón de pánico, el cual si se presiona un botón y este envía un mensaje o una cadena de caracteres con un PIC para ser leído por el ARDUINO y así realizar ciertas acciones (lo mas sencillo por ejemplo seria prender un LED para que todo estuviese bien).

La parte del envió de la cadena de caracteres la hago a través, como dije, de un PIC16F628A via puerto serial. Si presiono el botón A (por ejemplo) este envía un carácter, la letra A, o envía una serie de caracteres (la letra A, después la B y después la C). Les dejo el código en Asembler por si lo quieren ver.

	 CÓDIGO PIC16F628A

        __CONFIG   _CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & 
        _MCLRE_OFF
 	LIST P = PIC16F628A;
	#include "P16F628A.inc";

	ORG 0x00
	CBLOCK 0x0C
	
	cont1
	cont2
	cont10
	contador 
	ENDC
	
	movlw 7
	movwf CMCON

CONFIGINICIAL: 
	clrf PORTA	;Valor Incial PORTA
	clrf PORTB	;Valor Inicial PORTB

	bsf STATUS,RP0         	
	movlw b'00000111'	;3 Puertos De Entrada RA0, RA1, RA2
	movwf TRISA
	movlw b'00000010'	; RB0=Entrada, RB1=Entrada, RB2=Salida
	movwf TRISB
	movlw b'10000111' ;Habilidar Los Retardos
	movwf OPTION_REG
	movlw b'00100100' ;Habilitar La Transmision Async    
	movwf TXSTA         
	movlw 0x19 ;0x19=9600 BPS          
	movwf SPBRG
	bcf STATUS,RP0
	movlw b'10010000' ;Habilita La Recepcion Async
	movwf RCSTA

ESTABILIZACION: 
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	movf RCREG,W
	movf RCREG,W
	movf RCREG,W	

	goto INICIO

INICIO:
	call LIMPIAR
B1:	
	btfss PORTA,0; Se Encendio el Boton 1?
	goto B2
	goto BOTON1
B2:
	btfss PORTA,1; Se Encendio el Boton 2?
	goto B3
	goto BOTON2
B3:
	btfss PORTA,2; Se Encendio el Boton 3?
	goto INICIO
	goto BOTON3

BOTON1: 	
	bsf PORTB,5
	
	movlw 'B'
	call ENVIAR_DATOS
	movlw '1'
	call ENVIAR_DATOS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	goto INICIO
	
BOTON2:
	bsf PORTB,6
	
	movlw 'B'
	call ENVIAR_DATOS
	movlw '2'
	call ENVIAR_DATOS
	call ENVIAR_DATOS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	goto INICIO
	
BOTON3: 
	bsf PORTB,7
	
	movlw 'B'
	call ENVIAR_DATOS
	movlw '3'
	call ENVIAR_DATOS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	call RETARDO_50MS
	goto INICIO		

ENVIAR_DATOS:
	movwf TXREG             
	bsf STATUS,RP0		
ESPERAR: 	
	btfss TXSTA,TRMT       
       goto ESPERAR
       bcf STATUS,RP0    
       return

RETARDO_50MS:
	movlw d'61'
	movwf TMR0
	bcf INTCON,T0IF ;
PREGUNTA: 
	btfss INTCON,T0IF ;
	goto PREGUNTA
	clrw
	return

RETARDO_1SEG:
	movlw d'2'
	movwf cont2
CICLO_EXTERNO:
	movlw d'9'
	movwf cont10
CICLO_INTERNO:
	call RETARDO_50MS
	decfsz cont10
	goto CICLO_INTERNO
	decfsz cont2
	goto CICLO_EXTERNO
	return

LIMPIAR
	bcf PORTB,5
	bcf PORTB,6
	bcf PORTB,7
	
	clrf TXREG
	return 
	
END

Hasta acá todo bien, cuando envió un solo carácter a través del PIC, leerlo con el Arduino es facil por ser uno solo y se pueden realizar varias acciones. Pero por ejemplo como recibo una cadena de caracteres del PIC y guardarla en un vector, por ejemplo, si se envía la letra A después la B y después la C, como guardo eso en un vector, para después comparar o hacer acciones, es ahí donde me confundo. Les dejo el código en Arduino para ver si me ayudan. La intención seria guardar esos datos como si fuese una palabra como tal. Por ejemplo

Se envio A después B y después C a traves del PIC

Y esos caracteres se recibieron en el Arduino y se guardaron, como una palabra ABC.

CODIGO ARDUINO

void setup()
{
  LED1 = 2;
  LED2 = 3;
  LED3 = 4;
  pinMode(0, INPUT);
  pinMode(1, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  Serial.begin(9600);
}

int LEDPIN, LED1, LED2, LED3, VALOR;
char CADENA[4];
byte POSICION=0;

void loop()
{
  if(Serial.available())
  {
    memset(CADENA, 0,sizeof(CADENA));
    
    while (Serial.available()>0)
    {
      delay(5);
      CADENA[POSICION]=Serial.read();
      POSICION++;
    }
    VALOR=atoi(CADENA);  
    Serial.println(CADENA);
    POSICION=0;
  }  
}

Sin mas que decir muchas gracias y buenas noches

Crea una variable tipo string y simplemente concatena los caracteres hasta que el buffer quede vacio.

string entrada = "";

void loop(){
   while (Serial.available()){
      char caracter = Serial.read();
      entrada += caracter;
   }
}