I sounds like you want something like:
Code:
 400-1500Hz | 10-150us |  2-50us  |  10-50us |  2-50us  |  10-50us | 400-1500Hz
            +----------+          +----------+          +----------+
 ___________|          |__________|          |__________|          |___
              1st Pin               2nd Pin               3rd Pin
Does this look correct?

With a PIC (I'll assume an 18Fxxxx) there are some things you will need to keep in mind. Each instruction cycle is Fosc/4. So at 40Mhz it will complete most instructions in .1us. Some instructions use 2 instruction cycles to comeplete (like goto's). So you should be able to get close to .25us resolution, at least once the pulses start. It also looks like a 10/2/10/2/10 pulse string would not allow any other things to be done between starting and completing the series of 3 pulses if you need high accuracy.

Have you tried something like this to get the pulses? It should be close to the .25us accuracy you are looking for.

Code:
Pulse_1	VAR BYTE
Pulse_2	VAR BYTE
Pulse_3	VAR BYTE
Delay_1	VAR BYTE
Delay_2	VAR BYTE
'---------------------------
' Set the variables as needed
Pulse_1	= 10
Pulse_2	= 2
Pulse_3	= 25
Delay_1	= 10
Delay_2	= 50
'---------------------------
' Run this series of instructions
' at the appropriate interval

     portb.1 = 1
     pauseus Pulse_1	
     portb.1 = 0

     pauseus Delay_1	

     portb.2 = 1
     pauseus Pulse_2
     portb.2 = 0

     pauseus Delay_2

     portb.3 = 1
     pauseus Pulse_2
     portb.3 = 0
Now, what are you using to time the 400-1500Hz initial pulse? Does this also need to have a .25us accuracy? If it does, you may have trouble, since even using ASM and Interrupts, there is a 3-4 instruction cycle latency for the interrupt to start running after the trigger (so .4us). And this does not count any context saving that may be needed. Some more info may assist in getting more help for you problem.

SteveB