So hab mal versucht en Timer0 zum laufen zu bekommen.
Die Umdrehungszeit wird beim Int0 auf Null gesetzt.

Code:
$regfile = "m8def.dat"
$crystal = 10000000
$baud = 9600

 Ddrb = &B00000111
 Portb = &B00000000
 Ddrc = &B00000000
 Portc = &B00000000
 Ddrd = &B11110011
 Portd = &B00001100

 Dim A As Byte
 Dim Pause As Integer
 Dim Aus As Integer
 Dim Dzmax As Integer




  Pause = 100
  Aus = 0
  Dzmax = 10000                                             'Drehzahlbegrenzung



 'Testrotine der Ausgänge
        A = 0
       While A <= 4
         A = A + 1
         Waitms Pause
         Portb.0 = 1
         Portb.1 = 0
         Waitms Pause
         Portb.0 = 0
         Portb.1 = 1
       Wend
         Portb.0 = 1




'Zündung

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pind.2 = Input
Config Pind.3 = Input

Portd.2 = 1                                                 'Pullup ein
Portd.3 = 1                                                 'Pullup ein


On Int0 Int0serv
On Int1 Int1serv
Config Int0 = Falling                                       'Überprüfung ob der Pegel vom Geber fällt oder steigt....Falling!
Config Int1 = Falling
Enable Int0
Enable Int1



'Drehzahl

Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
Const Markierungenproscheibe = 1

Dim Zaehlerirq0 As Long
Dim Impulseprosekunde As Long
Dim Impulseprominute As Long
Dim Umdrehungenprominute As Integer


Zaehlerirq0 = 0

On Timer1 Timer_irq
Enable Timer1


 'Umlaufzeit 1.Zylinder
Config Timer0 = Timer , Prescale = 1
Const Timervorgabe2 = 254
Dim Umtime As Word
Dim Um_irq As Long
Dim Zuenttime As Word
Dim Zuenttime2 As Word


On Timer0 Um_irq
Enable Timer0



Enable Interrupts



'-------------------


Do
Portb.0 = 1
Portb.1 = 1

'Drehzahlüberwachung
Impulseprominute = Impulseprosekunde * 60
Umdrehungenprominute = Impulseprominute / Markierungenproscheibe
If Umdrehungenprominute > Dzmax Then
Disable Int1


Print "Drehzahlbegrenzung hat angesprochen"
Else
Enable Int1
End If

Select Case Umdrehungenprominute
 Case 1000 To 1200 : Portb.2 = 1
 Case Else : Portb.2 = 0
End Select


   Impulseprominute = Impulseprosekunde * 60
   Umdrehungenprominute = Impulseprominute / Markierungenproscheibe
   'Print "U/min  " ; Umdrehungenprominute




Loop

'-------------------




'linker Zylinder
Int0serv:
   Zuenttime = Umtime
   Umtime = 0
   Waitms Zuenttime
   Zuenttime2 = Zuenttime
   Portb.0 = 0
   Incr Zaehlerirq0
   Enable Int0

Return



'rechter Zylinder
Int1serv:
   Waitms Zuenttime2
   Portb.1 = 0
   Enable Int1
   Return


'Umlaufzeit ermitteln
Um_irq:
  Timer0 = Timervorgabe2
  Incr Umtime
  Print "Zeit" ; Umtime
  Return


'Pro Sekunde ein Aufruf
Timer_irq:
  Timer1 = Timervorgabe
  Impulseprosekunde = Zaehlerirq0
  Zaehlerirq0 = 0
  Return
Kommt mir so vor als ob Timer0 nicht die 0,1µs bringt.
Der Zähler steigt zu wenig in Incr Umtime.

Muss noch mal nachrechen mit der Umlaufzeit und dem zurücksetzen von Umtime auf 0.

Puhh das wird doch wohl nicht werden ?