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 ??
Lesezeichen