I have an 18F1320 @ 8mhz. with RS-285 as slave on the USART, and 3 active ADC channels. The USART receive is a high priority interrupt, transmit is polled. The 3 ADC's are handled in a "for" loop with a switch for each to select channel, etc. inside the loop. Probably could handle this more elegantly playing with bits, but this is straight forward easy to read. The main() initializes things, then in the endless loop has the "for"/switch, a little bit of calculating to scale the ADC values, and when a flag is set in the receive ISR after building the received string comparing with this device's string ,and printf the data to the USART. The system works OK with a one selected character received, or when setting the output values after the ADC loop, but receive a 6 character string (the RS-485 request to send data) with the ADC's output, garbage is sent. At the moment high interrupts are disabled while ADC's are active, but I had previously high interrupts enabled all the time in the endless loop. I haven't been doing any special save at the interrupts. What would be the appropriate way to handle interrupts and polling. :) -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist