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:
Bei der Taste 1 habe ich jetzt einfach mal PortC eingeschaltet, bei Taste 2 PortD.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
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







Zitieren

Lesezeichen