/*******************************************************
FILE:     char-echo-ints.c

DESCRIPTION: Just like char-echo.c but uses an interrupt to catch
incoming characters. 

REVISION HISTORY:  
*******************************************************/
//--Includes

#include <16f88.h>

//--Setup commands

#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,NOWRT,NOLVP  // internal oscillator
#id 0x1234                     // 4 digit id
#use standard_io(A)
#use standard_io(B)
//#use fast_io(A)
//#use fast_io(B)
#use delay(clock=8000000)      // declare clock speed
#use rs232(baud=19200,xmit=PIN_B5,rcv=PIN_B2) // USART


//--Pin definitions

#define LED      PIN_B0   // LED

/*******************************************************
  Main starts here
*******************************************************/

void main(void)
{
  int8 i;
  setup_oscillator(OSC_8MHZ);

//-------Set direction registers

//  set_tris_a(0xFF);   // a is all inputs (for adc)
//  set_tris_b(0xC0);   // b7,b6 in, rest out


//-------Flash led a few times

  for (i=0;i<2;i++) {
    output_high(LED);
    delay_ms(100);
    output_low(LED);
    delay_ms(300);
  }
  
//-------enable interrupts
                    
  enable_interrupts(INT_RDA);    // receive serial char
  enable_interrupts(GLOBAL);   

//-------loop forever, action is in ISR

  while (TRUE) {}

}


/*******************************************************
  RDA serial port character receive interrupt service routine
*******************************************************/

#int_rda
void serial_isr(void)
{
  putc(getc());  // echo the character
}  


