예제 #1
0
	void getsUSART(char *buffer, unsigned char len)
	{
	  char i;    // Length counter
	  unsigned char data;
	
	  for(i=0;i<len;i++)  // Only retrieve len characters
	  {
	    while(!DataRdyUSART());// Wait for data to be received
	
	    data = getcUART();    // Get a character from the USART
	                           // and save in the string
	    *buffer = data;
	    buffer++;              // Increment the string pointer
	  }
	}
예제 #2
0
void InterruptHandler( void )
{
  BYTE bTmp;
  if ( INTCONbits.INT0IF ) {
    // devo rever se é isso mesmo....
    // realiza a leitura do modem
    bTmp = getcUART( );

    ProcessaProtocolo( bTmp );

    INTCONbits.INT0IF = 0;
  }
  
  if ( PIR1bits.TMR2IF )
	{
		IncTickCount( );
		PIR1bits.TMR2IF = 0;
	}

	while ( PIR1bits.RCIF ) {
  	
  	if ( RCSTAbits.FERR ) {
    	//RCSTAbits.FERR = 0;
    	SerialGetchar();
    	break;
    }

    if ( RCSTAbits.OERR ) {
    	//RCSTAbits.OERR = 0;
    	RCSTAbits.CREN ^= 1;
    	Nop();
      RCSTAbits.CREN ^= 1;    	
    	break;
    }
    
  	if ( isrSerialFunc ){
      bTmp = SerialGetchar();
      (*isrSerialFunc)( bTmp ); 
    }  	
  }
}