Just use timer interrupt.
Check the pseudo codes below..
//-------------------------------------------------
char dispBuffer[MessageSize];
//Timer interrupt 500mSec
void Timer1()
{
printf(" "); // Clear LCD Line
strcpy (dispBuffer, dispBuffer+1, MessageSize-1); // Scroll n-1 Byte
strncat (dispBuffer, dispBuffer,1); // Add 1st char at the end
dispBuffer[MessageSize] = 0; // String Termination
printf (dispBuffer); // display New Messeage
}
//------------------------------------------------------
the message should be initialized in a main routine at the very beginning..
Timer routine can also be replaced into simple loop using loop-delay in it.
You may process any user input to break out of the loop then.
Try this and have fun...