gut du hast es nicht anders gewollt...
hier ist alles was ich habe...:
Code:
 Declare Sub Taste1()
 Declare Sub Taste2()
 Declare Sub Taste3()
 Declare Sub Taste4()
 Declare Sub Taste5()
 Declare Sub Move()
 Declare Sub Turn180()
 Declare Sub Stopnow()
 Declare Sub Anfahren()
 Declare Sub Turnleft()
 Declare Sub Turnright()
 Declare Sub Look()
Declare Sub Bremsen()
Declare Sub Rewind()
Declare Sub Lcdout()
Declare Sub Batteriespannung()
Declare Sub Temp()

Declare Function Tastenabfrage() As Byte

$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600



Config Adc = Single , Prescaler = Auto
Const Ref = 5 / 1023

Const Center = 109
Dim Ton As Integer
Dim Taste As Byte
Dim Volt As Single
Dim Dist(12) As Integer
Dim Servopos As Integer
Dim V As Integer
Dim Result As Byte
Dim Ms As Integer
Dim A As Byte
Dim Name As String * 20
Name = "RP 005"
Dim Text2 As String * 20
Dim Text3 As String * 20
Dim Dl As Integer
Dl = 1

'Ports für linken Motor
Config Pinc.6 = Output                                      'Linker Motor Kanal 1
Config Pinc.7 = Output                                      'Linker Motor Kanal 2
Config Pind.4 = Output                                      'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output                                      'Rechter Motor Kanal 1
Config Pinb.1 = Output                                      'Rechter Motor Kanal 2
Config Pind.5 = Output                                      'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02
'ende motorports

'In out für tasten
Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input                                       'Für Tastenabfrage
Porta.7 = 1                                                 'Pullup Widerstand ein
'ende in out für tasten


'timer config
Config Timer1 = Timer , Prescale = 1024

On Timer1 Timer_irq
Const Timervorgabe = 3036
Enable Timer1

 'timer config




'servo config
Config Servos = 1 , Servo1 = Porta.0 , Reload = 10
Config Pina.0 = Output
'ende servo config

'taster config
Config Pind.6 = Input
Portd.6 = 1


'lcd config
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portb.4 , Rs = Portb.3
Config Lcd = 20 * 4

'i2c config
Config Scl = Portc.0
Config Sda = Portc.1

Dim Device As Byte
Dim Deviceread As Byte
Dim Lowtemp As Byte
Dim Hightemp As Byte
Dim Value As Single
I2cinit

Device = 144
Deviceread = 145
'ende I2C temp config

Enable Interrupts







'programm start
Servopos = Center
Servo(1) = Servopos

Print "**** RN-Control ist startklar... Los  gehts!!! *****"
Sound Portd.7 , 400 , 450                                   'BEEP
Waitms 100
Sound Portd.7 , 400 , 250
Waitms 100                                                  'BEEP
Sound Portd.7 , 400 , 450                                   'BEEP


Cursor Off
Text2 = "I am alive..."
Call Lcdout
Wait 1



Text2 = "Erwarte Befehle"
Call Lcdout



Do
    Taste = Tastenabfrage()
   If Taste <> 0 Then

      Select Case Taste
         Case 1
            Call Taste1                                     'Taste 1  Servos
         Case 2
            Call Taste2                                     'Taste 2   Spannung an pin A5
         Case 3
            Call Taste3                                     'Taste 3
         Case 4
            Call Taste4                                     'Taste 4
         Case 5
            Call Taste5                                     'Taste 5
      End Select
      Sound Portd.7 , 400 , 500                             'BEEP
   End If

   Waitms 100
Loop

End





Function Tastenabfrage() As Byte
Local Ws As Word

   Tastenabfrage = 0
   Ton = 600
   Start Adc
   Ws = Getadc(7)
     If Ws < 500 Then
      Select Case Ws
         Case 400 To 450
            Tastenabfrage = 1
            Ton = 550
         Case 330 To 380
            Tastenabfrage = 2
            Ton = 500
         Case 260 To 305
            Tastenabfrage = 3
            Ton = 450
         Case 180 To 220
            Tastenabfrage = 4
            Ton = 400
         Case 90 To 130
            Tastenabfrage = 5
             Ton = 350

      End Select
      Sound Portd.7 , 400 , Ton                             'BEEP

   End If


End Function




  Sub Taste1()


  Text2 = "Servo Test"
 Call Lcdout()
  Wait 1

   Servopos = Center
  Servo(1) = Servopos
  Text2 = "Mitte"
  Call Lcdout()
  Wait 1

  Servopos = 60
  Servo(1) = Servopos
  Wait 1
   Text2 = "Rechtsdrehung"
   Call Lcdout()
   For Servopos = 60 To 160 Step 10
   Servo(1) = Servopos
   Waitms 10
   Next

   Wait 1
   Text2 = "Linksdrehung"
  Call Lcdout()
   For Servopos = 160 To 60 Step -10
   Servo(1) = Servopos
   Waitms 10
   Next

    Wait 1
    Text2 = "Mitte"
 Call Lcdout()
    Servopos = Center
   Servo(1) = Servopos




  End Sub



Sub Taste2()

Text2 = "Sensor Test"
Call Lcdout()
 Call Look()


End Sub


Sub Taste3()

Text2 = "Taster Test"
Call Lcdout()

Do

If Pind.6 = 0 Then
 Sound Portd.7 , 800 , 800



   Text2 = "Upps sorry..."
   Call Lcdout()
   Call Turn180
   End If
Waitms 300
Loop

End Sub



Sub Taste4()

  Wait 1
  Call Turn180

End Sub



Sub Taste5()

Text2 = "Volle Fahrt voraus"
Call Lcdout()
Wait 1
Call Move()

End Sub













Sub Move()
Text2 = "moving..."
Call Lcdout()
    Local U As Integer

     Start Adc                                              'spannungsmessung starten

     Call Anfahren                                          'anfahren


   'Fahren

   Do

   'servo Rechtsdrehung"
   Servopos = 89
   For Servopos = 89 To 129 Step 4
   Servo(1) = Servopos

   If Pind.6 = 0 Then                                       'taster anstoss
   Text2 = "Upps sorry..."
   Call Lcdout()
   Call Stopnow
   Call Rewind
   Call Turn180
   Call Anfahren
  Text2 = "moving..."
Call Lcdout()
   End If

   Waitms 80                                                'vorher 80
   U = Getadc(5)

   If U > 250 Then                                          'spannung am gp12d2 zu groß
   Text2 = "Hindernis gefunden"
  Call Lcdout()
   U = 0
   Call Stopnow
   Call Look
  Call Anfahren
 Text2 = "moving..."
Call Lcdout()

   End If

   Next



   'servo Linksdrehung"

   For Servopos = 129 To 89 Step -4
   Servo(1) = Servopos

     If Pind.6 = 0 Then
    Text2 = "Upps sorry..."
   Call Lcdout()
   Call Stopnow
   Call Rewind
   Call Turn180
   Call Anfahren
   Text2 = "moving..."
Call Lcdout()
   End If


   Waitms 80                                                'vorher 80ms
   U = Getadc(5)
   If U > 250 Then
   Text2 = "Hindernis gefunden"
  Call Lcdout()
   U = 0
   Call Stopnow
   Call Look
   Call Anfahren
   Text2 = "moving..."
Call Lcdout()
   End If

   Next
   Loop

   'bremsen
   If V > 0 Then
   Call Bremsen
   End If


   Servopos = Center
   Servo(1) = Servopos

End Sub





Sub Look()
   Local Sp As Byte
   Servopos = 60
    Servo(1) = Servopos
      Cls
                                                        'clear the LCD display
Text2 = "Suche weiteren Weg..."
Call Lcdout()


    Waitms 200
   Sp = 1


   'Servo "Rechtsdrehung":

   For Servopos = 50 To 160 Step 10                         'vorher 170

   Servo(1) = Servopos
   Waitms 180
   Dist(sp) = Getadc(5)
   Incr Sp

   Next
  Servopos = Center
    Servo(1) = Servopos


   'suche nach kleinstem wert
   Result = 1

   For Sp = 1 To 12                                         'vorher 12
   If Dist(sp) < Dist(result) Then Result = Sp
   Next



     Ms = 0
   Select Case Result
         Case 1
         Ms = 600
            Call Turnleft
         Case 2
         Ms = 500
            Call Turnleft
         Case 3
         Ms = 400
            Call Turnleft
         Case 4
         Ms = 200
            Call Turnleft
         Case 5
         Ms = 100
           Call Turnleft
         Case 6
         Ms = 50
            Call Turnleft
         Case 7
         Ms = 50
            Call Turnright
         Case 8
         Ms = 100
             Call Turnright
         Case 9
         Ms = 200
             Call Turnright
         Case 10
         Ms = 400
             Call Turnright
         Case 11
         Ms = 500
             Call Turnright
         Case 12
         Ms = 600
             Call Turnright

          Case Else
          Sound Portd.7 , 1000 , 200

      End Select

End Sub




Sub Turnleft()
Text2 = "Linksdrehung"

Call Lcdout()

'Print "drehen um " ; Ms ; " nach  links"
'servo auf mitte stellen
Servopos = Center
Servo(1) = Servopos

     'Linker Motor ein
   Portc.6 = 1                                              'bestimmt Richtung
   Portc.7 = 0                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN

   'Rechter Motor ein
   Portb.0 = 0                                              'bestimmt Richtung rechter Motor
   Portb.1 = 1                                              'bestimmt Richtung rechter Motor
   Portd.5 = 1                                              'rechter Motor EIN

   'beschleunigen der motoren
   V = 0
   Do
      Pwm1a = V
      Pwm1b = V
      Waitms 20
      V = V + 200
   Loop Until V > 1000

   Waitms Ms
   Call Bremsen

   Ms = 0

End Sub




Sub Turnright()
Text2 = "Rechtsdrehung"

Call Lcdout()

'servo auf mitte stellen
Servopos = Center
Servo(1) = Servopos


    'Linker Motor ein
   Portc.6 = 0                                              'bestimmt Richtung
   Portc.7 = 1                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN

   'Rechter Motor ein
   Portb.0 = 1                                              'bestimmt Richtung rechter Motor
   Portb.1 = 0                                              'bestimmt Richtung rechter Motor
   Portd.5 = 1                                              'rechter Motor EIN

   'beschleunigen der motoren
   V = 0
   Do
      Pwm1a = V
      Pwm1b = V
      Waitms 20
      V = V + 200
   Loop Until V > 1000

   Waitms Ms

   Call Bremsen

   Ms = 0

  End Sub




  Sub Turn180()
'servo auf mitte stellen
 Text2 = "180 Grad Drehung"
Call Lcdout()


    'Linker Motor ein
   Portc.6 = 0                                              'bestimmt Richtung
   Portc.7 = 1                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN

   'Rechter Motor ein
   Portb.0 = 1                                              'bestimmt Richtung rechter Motor
   Portb.1 = 0                                              'bestimmt Richtung rechter Motor
   Portd.5 = 1                                              'rechter Motor EIN

   'beschleunigen der motoren
   If V = 0 Then
   Do
      Pwm1a = V
      Pwm1b = V
      Waitms 20
      V = V + 100
   Loop Until V > 1000
   End If

   Waitms 1250                                              'warten


   'ab
  Call Bremsen


End Sub





Sub Stopnow()
Text2 = "Vollbremsung"
 Call Lcdout()
V = 0
  Pwm1a = V                                                 'Linker Motor aus
  Pwm1b = V                                                 'rechter Motor aus
End Sub


Sub Anfahren()
Text2 = "Anfahren"
 Call Lcdout()
 'Linker Motor ein
   Portc.6 = 0                                              'bestimmt Richtung
   Portc.7 = 1                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN

   'Rechter Motor ein
   Portb.0 = 0                                              'bestimmt Richtung rechter Motor
   Portb.1 = 1                                              'bestimmt Richtung rechter Motor
   Portd.5 = 1                                              'rechter Motor EIN

   'Beschleunigen
   V = 0
   Do
      Pwm1a = V
      Pwm1b = V
      Waitms 10
      V = V + 100
   Loop Until V > 1000
End Sub




 Sub Bremsen()
 Text2 = "Bremsen"
 Call Lcdout()

 Do
      Pwm1a = V
      Pwm1b = V
      Waitms 20
      V = V - 200
   Loop Until V < 1

   Pwm1a = 0                                                'Linker Motor aus
   Pwm1b = 0

 End Sub






 Sub Rewind()
 Text2 = "Rewind..."
 Call Lcdout()

 'Linker Motor ein
   Portc.6 = 1                                              'bestimmt Richtung
   Portc.7 = 0                                              'bestimmt Richtung
   Portd.4 = 1                                              'Linker Motor EIN

   'Rechter Motor ein
   Portb.0 = 1                                              'bestimmt Richtung rechter Motor
   Portb.1 = 0                                              'bestimmt Richtung rechter Motor
   Portd.5 = 1                                              'rechter Motor EIN

   'Beschleunigen
   V = 0
   Do
      Pwm1a = V
      Pwm1b = V
      Waitms 10
      V = V + 100
   Loop Until V > 1000

   Waitms 100

 End Sub


 Sub Lcdout()
 Cls
 Locate 1 , 1
 Lcd Name

 Locate 2 , 1
 Lcd Text2

 Call Temp
 Locate 3 , 1
 Lcd "Temp= " ; Fusing(value , "#.#") ; " Grad " ; Dl

 Call Batteriespannung
  Locate 4 , 1
 Lcd "Ubatt= " ; Fusing(volt , "#.##") ; " V"


  Incr Dl

 End Sub





 Sub Batteriespannung()
Local W As Word
Local Z As String * 10

  Start Adc
   W = Getadc(6)
   Volt = W * Ref
   Volt = Volt * 5.2941

End Sub




Sub Temp()

I2cstart
I2cwbyte Device
I2cwbyte &HEE
I2cstop

I2cstart
I2cwbyte Device
I2cwbyte &HAA
I2cstop

I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack
I2crbyte Hightemp , Nack

I2cstop

Value = Lowtemp * 10
If Hightemp = 128 Then
  Value = Value + 5
End If
Value = Value / 10

End Sub


Timer_irq:
  Timer1 = Timervorgabe

Call Lcdout
Return