Autor Tema: sirve esto para guardar en buffer armado 3 caracteres sin salir de la int_rda?  (Leído 1852 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353

int8 buf_rx [ 3 ] ;
int8 i_buf_rx ;


#int_RDA
void RDA_isr ( void )
{
  int8 c ;             // c para alojar al getc ()
  int8 qcarac ;    // contador de caracteres para salir de la interrupcion
  int8 i_buf_rx ;  //  indice del buffer de recepcion

  qcarac = 0 ;
  for ( i_buf_rx= 0 ; i_buf_rx < 3 ; i_buf_rx++ ) buf_rx [ i_buf_rx] = 0 ; //vacia el buffer de recepcion
  for ( qcarac = 0 ; qcarac < 3 ; qcarac++ )     // para 3 caracteres
  {
    while ( kbhit ( ) == 0 ) { } ;  // si no hay algo que recibir... que se quede ( para que no gire loco ) cuando entre el caracter sale del while
    {
      c = getc ( ) ; // lo descargo en c...
      if ( bit_test ( c , 7 )) // si el valor del bit 7 de la terna de los 3 bytes es 1 , es el byte 1
      {
        i_buf_rx = 0 ;
        buf_rx [ i_buf_rx ] = c ;   // le asigno el primer byte a c               
      }
      i_buf_rx ++ ;                    // incremento el indice ...
      buf_rx [ i_buf_rx ] = c ;    // le asigno a los caracteres restantes 1 y 2 el valor c
    }
  }
}