Hallo zusammen.

Am Anfang soll erst mal gesagt sein das ich ein µC Neuling bin.

Ich habe folgendes Script zusammengebastelt, wobei ein Schrittmotor von einen Poti ( später Joystick ) gesteuert wird. Bei Mittenstellung steht der Schrittmotor. Je weiter man nach links oder rechts dreht - umso schneller wird der Schrittmotor. Der Richtungswechsel klapt perfekt nur die Geschwindigkeit ist nicht linear.
Was mache ich falsch und kann man das eventuell im Hintergrund laufen lassen, da später nochmal 3 Schrittmotoren dazu kommen und die Schritte gespeichert werden sollen.
Ich habe das RN-Control Board V.1.4 und den 12V Schrittmotor von robotikhardware.de

Code:
Declare Sub Motorrechts()
Declare Sub Motorlinks()

$regfile = "m32def.dat"

$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto                

Dim Taste As Byte
Dim Volt As Single
Dim Joy1x As Word                                           'Variablen für Positionen des Steuerknüppel
Dim Joy1y As Integer
Dim Focus As Integer
Dim Zoom As Integer
Dim Faktor As Integer

' Für die Motoren
'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

1a Alias Portb.0                                            'Pin als Spule 1a benennen
1b Alias Portb.1                                            'Spule 1b

2a Alias Portc.6                                            'Spule 2a
2b Alias Portc.7                                            'Spule 2b


Portb.0 = 0                                                 'Spule 1a definiert auf Null
Portb.1 = 0                                                 'Spule 1b

Portc.6 = 0                                                 'Spule 2a
Portc.7 = 0                                                 'Spule 2b


Dim Zeit As Integer

Zeit = 1                                                    'Zeit zwischen den einzelnen Schritten (kleiner=schneller)

I = 0
Sound Portd.7 , 400 , 450                                   'BEEP
Sound Portd.7 , 400 , 250                                   'BEEP
Sound Portd.7 , 400 , 450                                   'BEEP
Print
Print "**** RN-Control 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print
Portd.4 = 1                                                 'Motortreiber Spule 1 Enable
Portd.5 = 1                                                 'Motortreiber Spule 2 Enable
Do

   Start Adc
   Joy1y = Getadc(0)
   Joy1y = Joy1y - 511
      Select Case Joy1y
         Case -10 To 10
            JMP Ende
         Case Else
            Joy1y = Joy1y - 0
            BRMI Links
            JMP Rechts
      End Select

      Links:
      Joy1y = Joy1y / 51
      Joy1y = Joy1y * -1
      Zeit = 11 - Joy1y
      Motorlinks
      JMP Ende
      Rechts:
      Joy1y = Joy1y / 51
      Zeit = 11 - Joy1y
      Motorrechts
      JMP Ende
      Ende:
Loop

End

Sub Motorrechts()

  1a = 1 : 1b = 0 : 2a = 1 : 2b = 0                         'Schritt 1
  Waitms Zeit
  1a = 1 : 1b = 0 : 2a = 0 : 2b = 0                         'Schritt 2
  Waitms Zeit
  1a = 1 : 1b = 0 : 2a = 0 : 2b = 1                         'Schritt 3
  Waitms Zeit
  1a = 0 : 1b = 0 : 2a = 0 : 2b = 1                         'Schritt 4
  Waitms Zeit
  1a = 0 : 1b = 1 : 2a = 0 : 2b = 1                         'Schritt 5
  Waitms Zeit
  1a = 0 : 1b = 1 : 2a = 0 : 2b = 0                         'Schritt 6
  Waitms Zeit
  1a = 0 : 1b = 1 : 2a = 1 : 2b = 0                         'Schritt 7
  Waitms Zeit
  1a = 0 : 1b = 0 : 2a = 1 : 2b = 0                         'Schritt 8
  Waitms Zeit

End Sub

Sub Motorlinks()

  1a = 0 : 1b = 1 : 2a = 1 : 2b = 0                         'Schritt 1
  Waitms Zeit
  1a = 0 : 1b = 1 : 2a = 0 : 2b = 0                         'Schritt 2
  Waitms Zeit
  1a = 0 : 1b = 1 : 2a = 0 : 2b = 1                         'Schritt 3
  Waitms Zeit
  1a = 0 : 1b = 0 : 2a = 0 : 2b = 1                         'Schritt 4
  Waitms Zeit
  1a = 1 : 1b = 0 : 2a = 0 : 2b = 1                         'Schritt 5
  Waitms Zeit
  1a = 1 : 1b = 0 : 2a = 0 : 2b = 0                         'Schritt 6
  Waitms Zeit
  1a = 1 : 1b = 0 : 2a = 1 : 2b = 0                         'Schritt 7
  Waitms Zeit
  1a = 0 : 1b = 0 : 2a = 1 : 2b = 0                         'Schritt 8
  Waitms Zeit

End Sub