Danke , war nenn toller code, aber warum hast du alles geändert , war meins den so sch***. ich glaube, ich hab jetzt verstanden Worum es Kommentare im Quellcode gibt! Damit andere auch verstehen was ich meine. Zugegeben dein Code ist echt kompliziert, geht das echt nicht einfacher?
Code:
 ## Definitionen 
const Preset_Timer0 = 219 
const OvF_Timer0 = 39 
[...] 

Dim Torzeit as Byte 
Dim Frequenz as long 
Dim Freq_low_word as word at Frequenz OVERLAY 
Dim Freq_high_word as word at Frequenz+2 OVERLAY 
[...] 

' ## Initialisierung 
On Timer0 ... 
On Timer1 ... 
enable ... 
enable ... 
enable ... 
Timer0 = Preset_Timer0 

' ## Hauptschleife 
Do 

   ' ## Messzeit abgelaufen? 
   if Torzeit = OvF_Timer0 Then 
      Freq_low_word = Timer1 

      ' ## Ausgabe 
      [hier: Ausgabe der Variablen "Frequenz"] 

      ' ## Messung neu initialisieren 
      Torzeit = 0 
      Freq_low_word = 0     'braucht nicht drin sein, da der Wert oben mit "=" zugewiesen wird 
      Freq_high_word = 0 
      Timer0 = Preset_Timer0 
      Timer1 = 0 
      Start Timer0 
      Start Timer1 
   end if 

   ' ## hier kannst Du noch beliebige ander Sachen machen. 
   ' Achtung, sobald Du oben die Messung neu initialisierst, wird der Wert in 
   ' der  Variablen Frequenz wieder verändert. 
   ' Wenn Du den Wert hier noch brauchst, z.B. für eine Ausgabe über die 
   ' Serielle Schnittstelle, dann musst Du ihn vorher in eine andere Variable 
   ' sichern. 

   loop 

' ## Schlußbemerkung: 
' Wenn ich den Code so wie er hier steht 1:1 in Deinem Programm 
' wiederfinde,  dann hau ich ihn Dir eine halbe Stunde lang um die Ohren. 
' (Falls wir uns irgendwann mal persönlich begenen sollten.) 

' Nimm ihn als Vorlage, versuch ihn zu verstehen und programmier dann 
' Deinen eigenen! Der Code den Du schon mühsam selbst geschrieben hast 
' ist dazu eine gute Grundlage. Den Rest, besonders die Funktion der 
' OVERLAY Option düfte hiermit soweit klar sein, daß Du es auch selber 
' kannst.   Wenn nicht, dann FRAGE!  


End 

' ## Interrupt Timer0 Überlauf 
Timer0_Ueberlauf_int: 
  incr Torzeit 
  if Torzeit = OVF_Timer0 Then 
     Stop Timer1 
     Stop Timer0 
  end if 
return 

' ## Interrupt Timer1 Überlauf 
Timer1_Ueberlauf_int: 
  incr Freq_high_word 
Return
Wenn ich den Code so wie er hier steht 1:1 in Deinem Programm
' wiederfinde, dann hau ich ihn Dir eine halbe Stunde lang um die Ohren.
' (Falls wir uns irgendwann mal persönlich begenen sollten.)
Würde dich nie so dermasen beleidigen!!!!!!!!!
Hier mein Code MIT Kommentar:
Code:
$regfile = "2313def.dat"
Dim Var1 As Byte
Dim Var2 As Long
Dim Freq As Long
Config Portb = Output
Config Portd = Output


Enable Interrupts
Enable Timer0
Enable Timer1



Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Counter , Edge = Rising
Config Pinb.5 = Input

Portb.5 = 0

On Timer0 Test1                                             ' Springe zu Test1 wenn Timer0 "voll"
On Timer1 Test2                                             ' Springe zu Test2 wenn Timer1 "voll"

Timer0 = 216                                                ' Constante zum erzeugen einer "Exacten" Sek.
Timer1 = 0


Start Timer0
Start Timer1                                                'Auf die Pins, Fertig, Messen!

Do                                                          ' Anzeige Schlaufe

Loop


Test1:
                                                              ' Wenn Timer0 (Gatetimer) voll, dann Var1 + 1
Incr Var1

If Var1 = 39 Then                                           'Wenn Timer0 39 überlief (1 Sek) dann:

  Freq = Timer1                                             ' Lese Timer1 aus ( Counter )

  Freq = Freq + Var2                                        ' Addiere Timer1 und Anzahl der überlaufe von Timer1*256

  Var1 = 0
  Var2 = 0

  Stop Timer0                                               ' Starte Messung erneut
  Stop Timer1
  Timer0 = 126
  Timer1 = 0
  Start Timer0
  Start Timer1

  Return

  End If

Return


Test2:                                                      ' Wenn counter (Timer1) überlauft, dann addiere 65536

Var2 = Var2 + 65536

Return
Hatte doch noch ein paar Fehlerchen korrigiert!

Jetzt versteht man meinen Code besser.
Gruß teslanikola