Hallo

So vielleicht?
Code:
'### Dims ###
...
Dim Soll1_rc As Word
Dim Soll2_rc As Word
Dim Soll3_rc As Word
Dim Soll4_rc As Word
Dim Temp as Word

'### Clear Interrupt ###
Soll1_rc = Tcd0_cca
Soll2_rc = Tcd0_ccb
Soll3_rc = Tcd0_ccc
Soll4_rc = Tcd0_ccd

'### Set Temp ###
Temp1_rc = Soll1_rc
Temp2_rc = Soll2_rc
Temp3_rc = Soll3_rc
Temp4_rc = Soll4_rc


'### Main ###
Main:

   If Temp1_rc <> Soll1_rc Then
      If Temp1_rc < Soll1_rc Then
         Temp = Soll1_rc - Temp1_rc
         If Temp < 100 Then
            Temp1_rc = Soll1_rc
         Else
            Temp1_rc = Temp1_rc + 100 ' Schrittweite1
         End If
      Else  
         Temp = Temp1_rc - Soll1_rc
         If Temp < 50 Then
            Temp1_rc = Soll1_rc
         Else
            Temp1_rc = Temp1_rc - 50 ' Schrittweite2
         End If
      End If
      Tcc0_cca = Temp1_rc
      Waitms 20 ' Wartezeit
   End If

   Tcc0_ccb = Soll2_rc
   Tcc0_ccc = Soll3_rc
   Tcc0_ccd = Soll4_rc

Goto Main

'*******************************************************************************
'### ISR #######################################################################
'*******************************************************************************
Capture_a:
Soll1_rc = Tcd0_cca
Return

Capture_b:
Soll2_rc = Tcd0_ccb
Return

Capture_c:
Soll3_rc = Tcd0_ccc
Return

Capture_d:
Soll4_rc = Tcd0_ccd
Return
(unkompiliert und ungetestet)

Die Verzögerung wird zum einen über die Schrittweite und zum anderen über die Wartezeit eingestellt. Ich hab's mal nur für einen Kanal geschrieben, bei mehreren Kanälen addieren sich die Verzögerungen, möglicherweise wird dann alles zu träge. Versuch macht kluch.

Gruß

mic