Hola muchachos.
Comento algo sobre los tiempos, ya que seguramente algunos de los problemas se encuentran allí.
Voy a poner un ejemplo, insisto es solo un ejemplo, pero puede ayudar a ajustar mejor los tiempos... vemos la siguiente porción de código:
sincro5: ;"inicio de 4 pulsos de 30 us y un pulso de 60 us en logico 1"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync <--- hsync puesto en bajo
for D = 0 to 3 <---- Demora extra aproximadamente de 6 a 8 us
pauseus 2 <---- Demora requerida de 2 us
high hsync <---- hsync puesto en alto
pauseus 30
low hsync
next Dobserven que entre la primera parte que marqué en rojo y la segunda que marqué en azul se requieren 2us de demora para volver a poner en alto "hsync", sin embargo el bucle for next mas las comparaciones estan agregando una demora de 8us (trabajando a 4 Mhz) y además se le da una demora de 2 us.... total 10us de demora.
Estas cosas deben tenerlas en cuenta, de no hacerlo no van a dar nunca con los tiempos adecuados.... incluso los pauseus 30, deben achicarlos considerando las demoras de los bucles comparaciones y los gotos...
Les recomiendo averiguar cuantos ciclos demora cada instrucción de basic y luego hacer una suma de estos tiempos (1us por ciclo) y restárselo a los "pause" que estan utilizando.
En assembler uno lo hace así, a los delay se le descuentan los tiempos de ejecución del mismo código, de otra forma los tiempos no dan... En básic que los tiempos son mayores eso es más importante aún...
Salud