Saludos Hermanos del Foro.
Les muestro este código para pasar a lo que pretendo (con su ayuda, claro)

const char LCD_buffer1[]={"\377 Disel agotado o Sensor da\356ado \377 Disel agotado o Sensor da\356ado "};
char LCD_buffer2[21]={""};
int8 posicion=0, caracter=0;
void main(void)
{
lcd_init();
while(true)
{
output_high(pin_c0); delay_ms(1000); output_low(pin_c0);
for(posicion=0;posicion<20;posicion++)
{
LCD_buffer2[posicion]=LCD_buffer1[posicion+caracter];
}
lcd_gotoxy(1,4); printf(lcd_putc,"%s",LCD_buffer2); [b]delay_ms(300);[/b]
caracter++;
if(caracter==34) {caracter=1;}
}
}
Bueno pues estoy desplazando el mensaje de izquierda a derecha en una lcd4x20 y el mensaje que se desplaza es
Disel agotado o Sensor dañado, hasta ahí todo bien, pues el mensaje se desplaza de manera correcta.
Lo que quiero hacer es quitar ese retardo de 300ms en la linea lcd_gotoxy(1,4); printf(lcd_putc,"%s",LCD_buffer2);
delay_ms(300); y hacerlo con el timer0, ya que tengo mas lineas de código
( output_high(pin_c0); delay_ms(1000); output_low(pin_c0); son para simular otro proceso únicamente ) y con este retarlo me hace lentas mis demás tareas en el programa.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ahora este es el código con timer0 y el pic a 20Mhz que estoy intentando pero no me resulta...
short msj=0;
#int_timer0 // Interrupcion para 1S
void timer0(void)
{ msj=1; set_timer0(46005);} // 46005 para que el timer sea aproximadamente de 250 ms
const char LCD_buffer1[]={"\377 Disel agotado o Sensor da\356ado \377 Disel agotado o Sensor da\356ado "};
char LCD_buffer2[21]={""};
int8 posicion=0, caracter=0;
void main(void)
{
lcd_init();
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);
set_timer0(46005);
enable_interrupts(GLOBAL);
while(true)
{
output_high(pin_c0); delay_ms(1000); output_low(pin_c0); // Solo para simular otro proceso del programa
if(msj==1) {
for(posicion=0;posicion<20;posicion++)
{
LCD_buffer2[posicion]=LCD_buffer1[posicion+caracter];
}
lcd_gotoxy(1,4); printf(lcd_putc,"%s",LCD_buffer2); msj=0;
}
caracter++;
if(caracter==34) {caracter=1;}
}
}
Pues el resultado es que no hace nada, el mensaje con no se muestra en pantalla con el intento del timer0, me podrían orientar el hacerlo de manera correcta?