No uso Basic, pero el problema esta en tus PAUSExx , a no ser que quieras que todos los servos se muevan identicamente.
Si queres control individual o grupal, Usa un timer, y su interrupcion, el timer deberia entrar a la interrupcion la cantidad de veces que necesites de precision. Ejemplo Si queres tener 64 pasos desde 0 a 180º entonces tu timer deberia interrumpir cada: 1ms/64 = 15.65us aprox. Luego en la interrupcion tenes un contador que va de 0 a 63 que vas a comprar con variables y si es mayor o menor poner a 1 o 0 la salida del servo correspondiente.
Como tu programa solo quiere ir de 0 a 90 y luego a 180, podrias hacer hacer una interrupcion cada 0.5ms, Cuando se cumplan 40 interrupciones ( 20ms / 0.5ms ) tenes que poner la salida a 1, Y cuando se cumpla el tiempo necesario, como en tu ejemplo 3 segundos, es decir cuando se reinicie 150 veces (3s/20ms) el PWM pasas de activarlo en la segunda interrupcion ( 1ms - 0º ) a la tercera (1.5 ms - 90º) luego lo mismo pero con la cuarta (2ms - 180º ). LLegado al punto en que estas usando la cuarta interrupcion y esperando esos 3s y volves a usar la 2da interrupcion.
Te daras cuenta que lo unico que tenes que hacer es:
Tener una interrupcion de un timer a 0.5ms, lo mejor es el CCP + Timer1
Una variable que tenga la cantidad de veces que entra en la interrupcion - Var1
Una variable que tenga la cantidad de veces que se reinicia - Var 2 , al comparar Var1 con 40, aumentar Var2 en 1 y poner todas las salidas a 1
Una variable para cada servo a comparar con las entrante a las interrupciones ( que define el angulo ), esta comparada con Var1 va a indicar el programa cuando se pone a 0 la salida, es decir la 2da interrupcion tendria un 2 aca.
Una variable a comparar con la cantidad de veces que se reinicia por si queres cambiar el tiempo.
En fin si no me entendiste busca por el foro o por internet sobre servos manejados por timer, debe haber ejemplos. Aunque me manejo con C, creo que te debe dar una idea de como hacerlo.