Hier Bitteschön, zu finden bei http://www.home.fh-karlsruhe.de/~saka0012!


Code:
'**************************************************************************
'*                               Roboter.BAS                              *
'**************************************************************************
'* Beispielprogramm zur Steuerung eines einfachen Roboters mit 90S8535    *
'* Controller mit 8 MHz.                                                  *
'**************************************************************************
'* Version: 1.0                                                           *
'* Datum:   21.10.2001                                                    *
'* Autor:   Kai Sachsenheimer                                             *
'**************************************************************************
'**************************************************************************


'**************************************************************************
'* Deklaration der Ports und Variablen:                                   *
'**************************************************************************
'* Port D = Servos bzw. Motoren                                           *
'* Port C = IR Sensoren                                                   *
'* Port A = Taster                                                        *
'**************************************************************************

 Config Portd = Output
 Config Portc = Input
 Config Pina.0 = Input
 Dim X As Byte
 Dim Weg As Byte
 Dim Y As Byte
 Dim Zufallszahl As Byte
 Dim Servor As Integer
 Dim Servol As Integer


'**************************************************************************
'* Initialisierung der Variablen:                                         *
'**************************************************************************

 X = 0
 Y = 0
 Servor = 0
 Servol = 0


Losgehts:
'Warten bis Taster am Port A.0 high ist.
 Bitwait Pina.0 , Set

Sense:
 If Y = 10 Then Goto Ausweichen
'**************************************************************************
'* Auswertung der IR-Sensoren:                                            *
'**************************************************************************
'* Sensoren-Port-Belegung:                                                *
'* IR Links außen = C.4                                                   *
'* IR Links mitte = C.3                                                   *
'* IR Mitte = C.2                                                         *
'* IR rechts mitte = C.1                                                  *
'* IR rechts außen = C.0                                                  *
'* Erkanntes Hindernis: Sensor meldet 0                                   *
'**************************************************************************

 Select Case Pinc
  'Kein Hinderniss wird nicht benötigt
  'Case &B00011111 : Goto -----------
  Case &B00011110 : Goto Linksaussen
  Case &B00011101 : Goto Linksmitte
  Case &B00011100 : Goto Linksbeide
  Case &B00011011 : Goto Zurueck
  Case &B00011010 : Goto Linksaussen
  Case &B00011001 : Goto Zurueck
  Case &B00011000 : Goto Linksaussen
  Case &B00010111 : Goto Rechtsmitte
  Case &B00010110 : Goto Zurueck
  Case &B00010101 : Goto Zurueck
  Case &B00010100 : Goto Linksaussen
  Case &B00010011 : Goto Rechtsmitte
  Case &B00010010 : Goto Linksaussen
  Case &B00010001 : Goto Zurueck
  Case &B00010000 : Goto Linksaussen
  Case &B00001111 : Goto Rechtsaussen
  Case &B00001110 : Goto Zurueck
  Case &B00001101 : Goto Zurueck
  Case &B00001100 : Goto Zurueck
  Case &B00001011 : Goto Rechtsaussen
  Case &B00001010 : Goto Zurueck
  Case &B00001001 : Goto Zurueck
  Case &B00001000 : Goto Linksaussen
  Case &B00000111 : Goto Rechtsbeide
  Case &B00000110 : Goto Rechtsaussen
  Case &B00000101 : Goto Rechtsaussen
  Case &B00000100 : Goto Zurueck
  Case &B00000011 : Goto Rechtsaussen
  Case &B00000010 : Goto Rechtsaussen
  Case &B00000001 : Goto Rechtsaussen
  Case &B00000000 : Goto Zurueck
 End Select

'Fährt geradeaus
Fahren:
 Servor = 2
 Servol = 1
 Weg = 2
 Y = 0
 Goto Motoren

'Fährt links
Linksaussen:
 Servor = 2
 Servol = 2
 Weg = 10
 Y = Y + 1
 Goto Motoren

'Fährt links
Linksmitte:
 Servor = 2
 Servol = 2
 Weg = 20
 Y = Y + 1
 Goto Motoren

'Fährt links
Linksbeide:
 Servor = 2
 Servol = 2
 Weg = 15
 Y = Y + 1
 Goto Motoren

'Fährt rechts
Rechtsaussen:
 Servor = 1
 Servol = 1
 Weg = 10
 Y = Y + 1
 Goto Motoren

'Fährt rechts
Rechtsmitte:
 Servor = 1
 Servol = 1
 Weg = 105
 Y = Y + 1
 Goto Motoren

'Fährt rechts
Rechtsbeide:
 Servor = 1
 Servol = 1
 Weg = 202
 Y = Y + 1
 Goto Motoren

'Fährt zrück
Zurueck:
 Servor = 1
 Servol = 2
 Weg = 100
 Goto Motoren

'**************************************************************************
'* Motorsteuerung:                                                        *
'**************************************************************************
'* Portd.3 = Servo rechts                                                 *
'* Portd.4 = Servo links                                                  *
'**************************************************************************

Motoren:
 For X = 1 To Weg
  Portd.3 = 1
  Waitms Servor
  Portd.3 = 0
  Portd.4 = 1
  Waitms Servol
  Portd.4 = 0
  Waitms 15
 Next
 Goto Sense

'**************************************************************************
'* Ausweichen:                                                            *
'**************************************************************************
'* Y wird um eins erhöht, wenn der Roboter immer nach links bzw. nach     *
'* rechts fährt ohne sich dabei nach vorwärts zu fahren.                  *
'* Ist der Roboter 10 mal nach links bzw. recht gefahren (hat sich an     *
'* einem Hindernis festgefahren) wird die Ausweich-Routine gestartet.     *
'* Zufallszahlen werden generiert, um den Robo zufällig nach links oder   *
'* rechts zu steuern.                                                     *
'**************************************************************************

Ausweichen:
 Y = 0
 Zufallszahl = Rnd(11)
 For X = 1 To 150
  Portd.3 = 1
  Waitms 1
  Portd.3 = 0
  Portd.4 = 1
  Waitms 2
  Portd.4 = 0
  Waitms 15
 Next
 If Zufallszahl > 5 Then Goto Linksaussen Else Goto Rechtsaussen