Okay - so langsam nimmt´s Formen an.

Sicherlich gibt´s viele Wege die nach Rom führen. Ich würde mir als Kernstück einen Timer so einstellen, dass er z.B. alle 10ms überläuft und ein Signalbit setzt. Also z.B. Timer 1 mit einem Prescaler von 16, d.h. einer Zählfrequenz von 1MHz, vorgeladen mit einem Wert von 55535.

Neben dem Signalbit wirst Du 3 Zeit-Variablen brauchen, die die vergangene Zeit seit dem letzten H-L-Wechsel zählen. Nennen wir sie ZeitX, ZeitY und ZeitZ, jeweils als Byte dimensioniert.


Die Hauptschleife würde ich immer damit beginnen, die Ausgänge gleich den Eingängen zu setzen, also
Code:
PORTD.7 = PIND.1
PORTC.1 = PIND.3
PORTC.4 = PIND.5
Dann müssen die Enables auf H gesetzt werden, wenn die Eingänge H führen:

Code:
If PIND.1 = 1 then
PORTB.0 = 1
End if

If PIND.3 = 1 then
PORTC.2 = 1
End if

If PIND.5 = 1 then
PORTC.5 = 1
End if

Alle 10ms, wird gecheckt, ob einer der drei Takte schon abgelaufen ist, der Enable-Ausgang aber noch H ist. In diesem Fall wird die dazugehörende Zeitzähl-Variable alle 10ms um 1 erhöht:

Code:
If Signalbit = 1 then
  Signalbit = 0  
  If PIND.1 = 0 AND PORTB.0 = 1  then  'Takt ist vorbei, aber enable noch H
  ZeitX = ZeitX + 1  'ZeitX erhöht sich alle 10ms um 1
  End if
 
 If PIND.3 = 0 AND PORTC.2 = 1 then
 ZeitY = ZeitY + 1
 End if

 If PIND.5 = 0 AND PORTC.5 = 1 then
 ZeitZ = ZeitZ + 1
 End if

End if
Am Schluss der Hauptschleife checkst Du dann, ob eine der drei Zeitzähl-Variablen 20 erreicht hat (für 200ms, ansonsten entsprechend höhere Werte). Ist dies der fall, wird der Enable-Ausgang auf L gesetzt und die Zeitzähl-Variable auf 0 zurückgesetzt:

Code:
If ZeitX = 20 then
PORTB.0=0       'Enable-Ausgang auf L
ZeitX=0           'Zeitzähl-Variable rücksetzen
End if

If ZeitY = 20 then
PORTC.2 = 0
ZeitY = 0
End if

If ZeitZ = 20 then
PORTC.5 = 0
ZeitZ = 0
End if
Zu guter Letzt noch die Timer1-ISR:

Code:
Timer1_ISR:
Signalbit = 1
Timer1=55535
Return
Vorausgesetzt dass ich dein Problem richtig verstanden habe, könnte es so klappen. Ich hoffe, es ist nicht allzu verwirrend...