Hallo.
So, ich hab jetzt die IF-schleifen noch so umgebaut und kommentare eigefuegt.
Mfg Markus

Code:
$regfile = "2313def.dat"                                    'Atmel AT90S2313
$crystal = 3686400                                          'Quarz = 3.6864 mhz
$baud = 9600                                                ' Baudrate = 9600

Dim Zaehler As Byte

Ddrd.2 = 1                                                  'motor rechts vorwärts
Ddrd.3 = 1                                                  'motor rechts rückwärts
Ddrd.4 = 1                                                  'motor links vorwärts
Ddrd.5 = 1                                                  'motor links rückwärts
Ddrb.6 = 1                                                  'enable rechts
Ddrb.7 = 1                                                  'enable links

Ddrb.0 = 0                                                  'taster links vorne
Ddrb.1 = 0                                                  'taster mitte vorne
Ddrb.2 = 0                                                  'taster rechts vorne
Portb.0 = 1                                                 'Pullups fuer taster aktivieren
Portb.1 = 1
Portb.2 = 1

Mrechtsvor Alias Portd.2                                    'Pins entsprechent der belegung benennen
Mrechtsrueck Alias Portd.3
Mlinksvor Alias Portd.4
Mlinksrueck Alias Portd.5
Enablerechts Alias Portb.6
Enablelinks Alias Portb.7

Schalterlinks Alias Pinb.0
Schaltermitte Alias Pinb.1
Schalterrechts Alias Pinb.2

Config Timer0 = Timer , Prescale = 1024                     'timer0 wird verwendet, quarz / 1024
Enable Timer0                                               'timer0 einschalten
Start Timer0                                                'timer0 starten
Enable Interrupts                                           'interrupts zulassen
On Timer0 Ontimer                                           'bei timerueberlauf gehe zu "ontimer"

Enablelinks = 1                                             'Pin fuer linken motor auf 5V
Enablerechts = 1                                            'Pin fuer rechten motor auf 5V

'***************######  HAUPTSCHLEIFE  ######***************

Do
   If Schalterlinks = 1 And Schaltermitte = 1 And Schalterrechts = 1 Then       'wenn alle schalter frei
      Print "g"                                             'print "g" für fahrtenschreiber
      Gosub Gerade                                          'gehe zu "gerade"
   Else
      If Schalterlinks = 0 Then                             'wenn linker schalter gedrückt
         Print "L"                                          'print "L" für fahrtenschreiber
         Zaehler = 0                                        'setzte Zaehler auf null
         Gosub Links                                        'gehe zu "links"
      End If
      If Schaltermitte = 0 Then                             'wenn mittlerer schalter gedrückt
         Print "M"                                          'print "M" für fahrtenschreiber
         Zaehler = 0                                        'setzte Zaehler auf null
         Gosub Mitte                                        'gehe zu "mitte"
      End If
      If Schalterrechts = 0 Then                            'wenn rechter schalter gedrückt
         Print "R"                                          'print "R" für fahrtenschreiber
         Zaehler = 0                                        'setzte Zaehler auf null
         Gosub Rechts                                       'gehe zu "rechts"
      End If
   End If
Loop


'***************######  GERADE  ######***************
Gerade:
   Mlinksvor = 0                                            'motoren bremsen
   Mlinksrueck = 0
   Mrechtsvor = 0
   Mrechtsrueck = 0
   Waitms 100                                               'zeit zum bremsen
Do
   Mlinksvor = 1                                            'unendlich vorwaerts fahren, bis anderer befehl kommt
   Mlinksrueck = 0
   Mrechtsvor = 1
   Mrechtsrueck = 0
   If Schalterlinks = 0 Or Schaltermitte = 0 Or Schalterrechts = 0 Then       'wenn irgendein schalter gedrückt
      Return                                                'dann zurueck zur hauptschleife
   End If
Loop


'***************######  BEI LINKEM SCHALTER  ######***************
Links:
   Mlinksvor = 0                                            'motoren bremsen
   Mlinksrueck = 0
   Mrechtsvor = 0
   Mrechtsrueck = 0
   Waitms 100                                               'zeit zum bremsen
Do
   If Schaltermitte = 0 Or Schalterrechts = 0 Then          'wenn mittlerer oder rechter schalter gedrueckt
      Return                                                'dann zurueck zur hauptschleife
   Else
      If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
         Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
         Mlinksrueck = 1
         Mrechtsvor = 0
         Mrechtsrueck = 1
      Else
         Mlinksvor = 1                                      'danach drehung nach rechts
         Mlinksrueck = 0
         Mrechtsvor = 0
         Mrechtsrueck = 1
      End If
   End If
   If Zaehler = 70 Then                                     'wenn Zaehler = 70
      Return                                                'dann zurueck zur hauptschleife
   End If
Loop


'***************######  BEI MITTLEREM SCHALTER  ######***************
Mitte:
   Mlinksvor = 0                                            'motoren bremsen
   Mlinksrueck = 0
   Mrechtsvor = 0
   Mrechtsrueck = 0
   Waitms 100                                               'zeit zum bremsen
Do
   If Schalterlinks = 0 Or Schalterrechts = 0 Then          'wenn linker oder rechter schalter gedrueckt
      Return                                                'dann zurueck zur hauptschleife
   Else
      If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
         Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
         Mlinksrueck = 1
         Mrechtsvor = 0
         Mrechtsrueck = 1
      Else
         Mlinksvor = 1                                      'danach drehung nach rechts
         Mlinksrueck = 0
         Mrechtsvor = 0
         Mrechtsrueck = 1
      End If
   End If
   If Zaehler = 90 Then                                     'wenn Zaehler = 90
      Return                                                'dann zurueck zur hauptschleife
   End If
Loop


'***************######  BEI RECHTEM SCHALTER  ######***************
Rechts:
   Mlinksvor = 0                                            'motoren bremsen
   Mlinksrueck = 0
   Mrechtsvor = 0
   Mrechtsrueck = 0
   Waitms 100                                               'zeit zum bremsen
Do
   If Schalterlinks = 0 Or Schaltermitte = 0 Then           'wenn linker oder mittlerer schalter gedrueckt
      Return                                                'dann zurueck zur hauptschleife
   Else
      If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
         Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
         Mlinksrueck = 1
         Mrechtsvor = 0
         Mrechtsrueck = 1
      Else
         Mlinksvor = 0                                      'danach drehung nach links
         Mlinksrueck = 1
         Mrechtsvor = 1
         Mrechtsrueck = 0
      End If
   End If
   If Zaehler = 70 Then                                     'wenn Zaehler = 70
      Return                                                'dann zurueck zur hauptschleife
   End If
Loop


'Interrupt-Routine für TIMER0
Ontimer:                                                    'wenn timer0 ueberlaeuft
   Incr Zaehler                                             'dann Zaehler incrementieren
Return                                                       'danach zurueck zur hauptschleife