Hi,
ich geh' mal davon aus, dass der obige code nicht in einer ISR ausgeführt wird, denn dann ist er nicht unterbrechbar.
Es gibt zwei Möglichkeiten, wie du auf Tastendrücke reagieren kannst. Entweder du fragst dauernd die Pins ab oder du hast die taster an einem externen Interrupt Eingang (z.B. Pin Change) angeschlossen.
Wenn du selber abfragst und es nur eine Taste oder mehrere Tasten an einem Port sind, dann würde ich nach dem Wait eine If Abfrage einbauen. Etwa so:

Code:
Config Porta = Input
Config Portc = Output
Config Portd = Output
Dim I As Byte , N As Byte , Taste As Byte , Tasten_flag As Byte
If Taste = 1 Then
   For I = 1 To 100
      For N = 0 To 7
         portc.n = 0
         Waitms 100
         portc.n = 1
         If Pina > 0 Then
            Tasten_flag = 1
            Exit For
         End If
      Next N
      If Tasten_flag = 1 Then
         Exit For
      End If
   Next I
Elseif Taste = 2 Then
   For I = 1 To 100
      For N = 0 To 7
         Portd.n = 0
         Waitms 100
         Portd.n = 1
         If Pina > 0 Then
            Tasten_flag = 1
            Exit For
         End If
      Next N
      If Tasten_flag = 1 Then
         Exit For
      End If
   Next I
End If
Tasten_flag = 0
Taste = Pina
Bei der Taste 1 habe ich jetzt einfach mal PortC eingeschaltet, bei Taste 2 PortD.
Wenn mehrere tasten gleichzeitig gedrückt sein können, musst die Tastendrücke erst einmal zwischenspeichern.
Löst der Druck einen externen Interrupt aus, dann wird das tasten_flag in der ISR gesetzt und anstelle des "If PINA > 0 Then" abgefragt.

Klaro?

Gruß

Rolf