Better, but it still needs a way to limit it to the "bounds" of the array. Or, it will overwrite all your other variables. Maybe like this.
Code:
'---[RX - inmterrupt handler]----------------------------------------------
Int_RX:
    PORTA.1 = 1 'to check RX int has come 
    hserin [cadena(i)] 
    i = i +1
    if i >= 20 then i = 0
@ INT_RETURN
Of course this still has the problems of not knowing how many bytes were received, if the buffer overflows, if USART errored etc.

You might want to take a look at this program from Joe S.

LCD serial backpacks
http://www.picbasic.co.uk/forum/showthread.php?p=28336

It has a complete "Circular Buffer" using DT_INTS.
<br>