Darren As others have replied you have to test the interrupt flag in the common interrupt routine. This would have been nicer if Microchip had implemented a different interrupt address for each source, but it's not that hard to cope with. Secondly it takes about 1mS to transmit a byte at 9600bps. If you had to wait for the transmitter to be empty then that's 1mS each byte transmitted - it could slow your code to unuseability. In the FED library routines for our C Compiler and visual assembler we provide interrupt driven communications routines which provide a transmit buffer - you add as many bytes as you wish to the transmit buffer and the interrupt handler transmits them one after another in the background whilst your program does some useful work ! Robin Abbott - robin.abbott@fored.co.uk ************************************************************************** * * Forest Electronic Developments * http://www.fored.co.uk * ************************************************************************** ----- Original Message ----- From: Darren King To: Sent: 20 October 1999 09:56 Subject: USART interupts; Why use them? > I've been programming the PIC16F877 using Pic C. My question is about the > interupts. With the Pic16F877 there is just one interupt vector right? So > when ANY interupt happens it goes to the same procedure. In order for this > to be usefull do I set up a "If this Interupt Flag is True then this" kind > of thing or what? And as for the USART interupts. I can understand using > the Recieve Interupt as that would allow you to buffer bytes and then read > them when you get the time, but why would you need a send Interupt? > > DjK