Receiving only a single character from XBee...

Maybe because everything is in the ISR. (I personnally had trouble with wrong usage of an ISR.) A solution is setting a flag or the counter in the ISR and read this flag or counter in a loop to read the buffed data. I believe (in my noob opinion) that the main problem would be that the characters are coming too much quick for the program.