Hier mal ein paar Zeilen auf die schnelle, die vieleicht als Anregung dienen können:
Code:
Config Timer2 = Timer , Prescale = 256                      'Timer für Motorsteuerung
Config Pind.6 = Output                                      'Schrittmotoren Ein/Aus
Config Pinc.5 = Output                                      'Schrittmotor Links Richtung
Config Pinc.3 = Output                                      'Schrittmotor Links Step
Config Pinc.4 = Output                                      'Schrittmotor Rechts Richtung
Config Pinc.2 = Output                                      'Schrittmotor Rechts Step
On Timer2 Interrupthandler                                  'Alle Interrups werden in dieser Routine behandelt

Enable Interrupts                                           'Interrupts aktivieren
Enable Timer2
Start Timer2                                                'Motortimer starten
Timer2 = Geschwindigkeit                                    'Geschwindigkeit initialisieren

Interrupthandler:                                           'Wenn Timer überlauf wird der Interrupt ausgelöst
If Motoraktiv = 1 Then                                      'Nur wenn die Motoren aktiv sein sollen
   Toggle Portc.2                                           'Schrittmotor Rechts Step
   Toggle Portc.3                                           'Schrittmotor Links Step
   If Beschleunigen = 1 Then
      If Geschwindigkeit < Maxgeschwindigkeit Then
         Geschwindigkeit = Geschwindigkeit + 1
      Else
         Beschleunigen = 0
      End If
   End If
   If Bremsen = 1 Then
      If Geschwindigkeit > Mingeschwindigkeit Then
         Geschwindigkeit = Geschwindigkeit - 1
      Else
         Bremsen = 0
         Motoraktiv = 0
         Portd.6 = 0
      End If
   End If
End If
Timer2 = Geschwindigkeit                                    'Grundwert für nächsten Interrupt setzen
Return

Vor:
Bremsen = 1
Waitms 500
Beschleunigen = 1
Portd.6 = 1                                                 'Schrittmotoren aktiv
Portc.5 = 0                                                 'Schrittmotor Links Richtung vor
Portc.4 = 1                                                 'Schrittmotor Rechts Richtung vor
Motoraktiv = 1
Return

Zurueck:
Bremsen = 1
Waitms 500
Beschleunigen = 1
Portd.6 = 1                                                 'Schrittmotoren aktiv
Portc.5 = 1                                                 'Schrittmotor Links Richtung zurück
Portc.4 = 0                                                 'Schrittmotor Rechts Richtung zurück
Motoraktiv = 1
Return

Halt:
Bremsen = 1
Return

Nothalt:
Motoraktiv = 0                                              'Kein weiterer Step
Geschwindigkeit = Mingeschwindigkeit
Beschleunigen = 0
Bremsen = 0
Waitms 200                                                  'Wartezeit um Schrittmortor auf Punkt zu halten und erst dann
Portd.6 = 0                                                 'Schrittmotoren ausschalten
Return


Rechts:
Bremsen = 1
Waitms 500
Beschleunigen = 1
Portd.6 = 1                                                 'Schrittmotoren aktiv
Portc.5 = 0                                                 'Schrittmotor Links Richtung vor
Portc.4 = 0                                                 'Schrittmotor Rechts Richtung zurück
Motoraktiv = 1
Return

Links:
Bremsen = 1
Waitms 500
Beschleunigen = 1
Portd.6 = 1                                                 'Schrittmotoren aktiv
Portc.5 = 1                                                 'Schrittmotor Links Richtung zurück
Portc.4 = 1                                                 'Schrittmotor Rechts Richtung vor
Motoraktiv = 1
Return

Schneller:
If Geschwindigkeit < Maxgeschwindigkeit Then                'Maximale Umdrehungszahl
   Geschwindigkeit = Geschwindigkeit + 5
End If
Return

Langsamer:
Geschwindigkeit = Geschwindigkeit - 5
Return
[/quote]