TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 14 de Abril de 2007, 15:56:04
-
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
}
}
}