There is a string buffer referenced by both an ISR and the main(). The ISR collects a sentence from UART and put it into the buffer. Once the received sentence is completed a flag is raised. The main() checks the flag and copies the sentence to another buffer. The code is like
unsigned char xdata RxBuffer[]; unsigned char xdata buffer[]; bit RxFlag = 0; void uart( void ) { //receive data from sbuf RxBuffer[] = sbuf; //if done RxFlag = 1; } void main( void ) { while( 1 ) { if( RxFlag ) strcpy( buffer, RxBuffer ); } }