Hallo EF_Arcturus

vielen Dank für Deine Hinweise! Ich habe das mal umgesetzt, mit langsamerem Takt, weil ich will ja auch was sehen an der LED.
Kann man ja später für den Schritti wieder hochdrehen.
Der Encoder ist übrigens mit dem Bascom-Encoder-Befehl dekodiert, da kommt kein Timer zum Zug.
Den Timer für die Takterzeugung habe ich mal mit Timer0 gemacht, und dann noch die zwei Led's - eigentlich DIR und Enable - auskommentiert, damit mein Schrittmotor mal läuft. Die Idee mit der Verknüpfung durch Aufaddieren ist klasse, mit Timer 0 und max 255 sowie aufaddiertem Wert 100 macht in der Tat schneller und langsamer, genau was ich will.

Damit sieht man schon mal, dass da was sinnvolles passiert. Was mich allerdings wundert:
Trotzdem ich da die Timerwerte nach unten und oben begrenze, läuft der Timer über wenn ich den DE über den Wert hinaus drehe. Wie kann ich das verhindern?

Der aktuelle Code sieht so aus:

Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600
' BASCOM-Programm
' Stefan Hoffmann 2009
' Drehimpulsgeber/Encoder     mit ENCODER-Befehl
'
' In: Drehimpulsgeber an d.0 und d.1 sowie Taster

'-----Deklarationen fuer Drehimpulsgeber:

' Testprogramm  für A3967 Platine mit Dir Step und Enable

$regfile = "attiny2313.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000                                          'Quarzfrequenz
$baud = 9600


Config Timer0 = Timer , Prescale = 1024                     'Timer1 Deklarationen für den Takt des Steppers
Enable Timer0
Timsk.toie0 = 1
Dim Timer0_reload As Word
Portd.4 = 1                                                 ' Pullup Widerstand ein   für Enable - ****Enable =0 bedeutet Motor On!!!!  ****
Enable Interrupts
On Timer0 Isr_timer0                                        'Deklaration der Timerroutine


         ' Inputs: Drehimpulsgeber an d.0 und d.1 sowie Taster an d.3
         '-----Deklarationen fuer Drehimpulsgeber:
Config Pind.0 = Input
    Encoder_a Alias Pind.0                                  'Encoder Signal B  an Pin 2
Config Pind.1 = Input
    Encoder_b Alias Pind.1                                  'Encoder Signal A  an Pin 3
Config Pind.3 = Input
    Taster1 Alias Pind.3                                    'Taster

Pind.0 = 1                                                  'Pullups für den Drehencoder
Pind.1 = 1
Pind.3 = 1
                                                   'LED-Outputs stellvertretend für Step, Dir, Enable
                                                  ' In der endgültigen Hardware liegen: Step/Takt auf PD.2 / Taster auf PD.3 / Enable auf PD4 / Richtung auf PD5 /
Config Portd.2 = Output
    Portd.2 = 0                                             'das ist Pin 6   - alles mit Pulldown   -  steht für Step/Takt
Config Portd.5 = Output
    Portd.5 = 0                                             ' Pin 9  - der hier steht für Dir
Config Portb.4 = Output
    Portb.4 = 0                                             ' Pin 16   -  diese Led steht für Enable

Led_gelb Alias Portd.2
Led_gruen Alias Portd.5
Led_rot Alias Portb.4


Dim Wert As Word
Wert = 100                                                  'willkürlich gewählter Startwert
Dim Zustand As Byte

       '***********Hauptschleife:**********
Do


Led_rot = 0                                                 'Enable ein
Zustand = Encoder(pind.0 , Pind.1 , Linksroutine , Rechtsroutine , 0)

   'If Wert > 100 Then    'mal wegkommentiert für den Test mit dem Schritti
   'Led_rot = 1
    'Else
    'Led_rot = 0
  'End If

   'If Wert < 100 Then
   'Led_gruen = 1
    'Else
    'Led_gruen = 0
  'End If

Loop

End


Isr_timer0:
   Timer0_reload = 100                                      'Vorgabe für 50 / sec
   Timer0 = Timer0_reload + Wert

   If Timer0 = 25 Then   'Wertbegrenzung nach unten
   Timer0 = 25
   End If

   If Timer0 = 255 Then  'Wertbegrenzung nach oben
   Timer0 = 255
   End If

   Toggle Led_gelb                                          '= Stepper_takt
Return


Linksroutine:
Decr Wert
Return

Rechtsroutine:
Incr Wert
Return
Bis hierhin bin ich schon mal ganz glücklich.

Habt Ihr Ideen, wie ich dieses "Überlaufen" weg bekomme?