///////////////////////////////////////
// RAM
///////////////////////////////////////
int xbuff=0x00; // Índice: siguiente char en cbuff
char cbuff[lenbuff]; // Buffer de recepción
int1 flagTimeOut = 0x00; // Flag que indica timeout completo, inicializado a 0
// INTERRUPCIONES : TIMER0 para timeout
///////////////////////////////////////
#int_timer0
void timer0_isr() { // Interrupción por desbordamiento de timer0
flagTimeOut = 1;
}
void main() {
enable_interrupts(global); // Habilitamos las interrupciones
do{ // inicio del Bucle infinito
if(kbhit()){ // Si hay algo pendiente de recibir ...
cbuff[xbuff++]=getc();
set_timer0(0);
enable_interrups(int_timer0);
}
if(flagTimeOut ==1){ // Si hemos completado una recepción ...
flagTimeOut =0; // lo desmarcamos para poder reiniciar el tema
disable_interrups(int_timer0); // detenemos el timer0
execute_lo_que_sea(); // Aqui podemos procesar lo recibido sobre cbuff.
xbuff=0x00; // reiniciamos el buffer de recepción
}
}while(TRUE); // final del Bucle infinito
}