UY pues yo de basic me olvidé todo. Programo en asm.
Vamos a ver
Lo mejor que puedes hacer cuando comienzas con un programa, sea el lenguaje que sea es hacer un diagrama de flujo, sino te pierdes.
Un diagrama de flujo es un borrador donde planeas las decisiones del micro en modo gráfico. O sea con triangulos para decisiones si-no y rectángulos para ejecuciones, etc etc.
Yo SIEMPRE lo hago. Una vez tengo terminado el diagrama de flujo es cuestión de cocer y cantar, porque vas codificando lo que tienes en el diagrama de flujo y te puedo asegurar que tendrás poquísimos errores y además que si tienes que modificar algo lo haces en un periquete porque sabes que hace cada rutina.
tienes varias entradas y varias salidas retardadas?
Un ejemplo con 3 entradas + 3 relays
En el programa principal testeas las entradas 1 , luego la 2 y luego la 3 y pones el flag que le corresponda a 1 cuando se active. Sigues con mas instrucciones , lo que quieras hacer o vuelves al inicio.
En las interrupciones testeas flag 1, y si está activo entonces activas contador 1. Testeas flag 2, y si está activo entonces activas contador 2. Testeas flag 3, y si está activo entonces activas contador 3. AL finalizar cualquiera de los contadores activas la salida que le corresponda y limpias el flag que le corresponda.
No entiendo que quieres hacer con el pobre pcl /pclath
Si lo que quieres es que vuelva desde donde se le llamó te estás equivocando. Yo estaba con un proyecto donde "pensaba" que lo mejor era modificar el pcl para cuando volviese de las interrupciones fuese donde yo quisiera, pero inmediatamente lo descarté ya que se armaría un cacao que no veas.
Cuando las cosas parecen oscuras un simple "flag" me ha despejado todas las dudas.
Si pudieses ejemplificarme un poco más lo que quieres hacer, quisas pueda ayudarte mejor.