Hallo
Hab es jetzt doch mit einem Interrupt gemacht.
Da bleibt mir dann auch ein Timmer frei
Mit Vier Dioden zum Interrupt pin Int0

Code:
'--------Roboter KKL Steuerung --------------------
'$sim

$regfile = "m8def.dat"
$crystal = 8000000


'---Config Port's--------------------
Config Portd = Input
Portd = 255

Config Portb = Output


'---Config Timer -------------------
Config Timer0 = Timer , Prescale = 64


'---Config Interrupt-----------------
Config Int0 = Falling


'---Sonstiges------------------------
Dim Sensor As Byte
Dim A1 As Word
Dim A2 As Word





'On Timer0 Sensoren_auswerten
'Enable Timer0
Enable Interrupts


'========================================================================
'========= Hauptprogramm ================================================
'========================================================================
Portb = 0
'Gosub Vor

On Int0 Sensoren_auswerten
Enable Int0


Do

Anfang:
Select Case Sensor
Case 1:
     Gosub Zurueck
            For A1 = 1 To 5
                If Sensor <> 1 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Rechts
            For A1 = 1 To 5
                If Sensor <> 1 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Vor
            Sensor = 0
Case 2:
     Gosub Zurueck
            For A1 = 1 To 5
                If Sensor <> 2 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Links
            For A1 = 1 To 5
                If Sensor <> 2 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Vor
            Sensor = 0
Case 3:
     Gosub Vor
            For A1 = 1 To 1
                If Sensor <> 3 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Links
            For A1 = 1 To 1
                If Sensor <> 3 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Vor
        Sensor = 0
Case 4:
     Gosub Vor
            For A1 = 1 To 1
                If Sensor <> 4 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Rechts
            For A1 = 1 To 1
                If Sensor <> 4 Then Goto Anfang
            For A2 = 1 To 65500
            Next A2
            Next A1
     Gosub Vor
            Sensor = 0
End Select





Loop


End



'===============UnterProgramme===========================================


Sensoren_auswerten:
If Pind.4 = 0 Then Sensor = 1           'Sensor links vorne
If Pind.5 = 0 Then Sensor = 2           'Sensor rechts vorne
If Pind.6 = 0 Then Sensor = 3           'Sensor links hinten
If Pind.7 = 0 Then Sensor = 4           'Sensor rechts hinten
Return


Links:
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
Return


Rechts:
Portb.1 = 1
Portb.2 = 0
Portb.3 = 1
Return


Zurueck:
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Return


Vor:
Portb.1 = 1
Portb.2 = 0
Portb.3 = 0
Return


Stopp:
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Return
Das Wait mal durch For-next Schleifen ersetzt.
(später vielleicht durch Timer0)
und überrall eine Abfrage drinnen, ob die Sensor Werte noch aktuell sind.

Gibt es eine Möglichkeit, dass ich durch den Interrupt an den "Anfang" springen kann ?
Aus der ISR kann ich nicht mit Goto springen

Habt ihr noch Vorschläge ??