Mike,

Are you getting your pulses from a hobby radio receiver? One way is to use one of your outputs from the receiver, say elevator as an interrupt trigger. Determine if the 4 line pulses are all going out (1 ~ 2ms pulse width) at the same time not staggered in time (if they are staggered then this will not work).

If all receiver lines are updated at the same time, at the PIC use an external interrupt to trigger on a rising edge and capture all 4 signals in an assembly routine within a tight loop. Increment a unique counter for each I/O line if the line remains high (you will need a delay so you don't exceed 255 counts @ 2ms max). If you need higher resolution sample higher at the pic and use word size counters. Each snap shot will be no more than 2ms long. Once your 2ms is up, jump back to your main code and update all 4 outputs from the pic. Do this every 16.67ms.

I am sure others here have their tried and true way of doing it also.

Nick