Hab jetzt noch ein paar wartezeiten eingefügt zum entprellen eingefügt. Und die Bedingungen der Subroutinen geändert. Nach anpassung der 31250 auf die tatsächliche Taktfrequenz läuft es nun bestens.

Code:
$regfile "m8def.dat"
$crystal = 8000000
$hwstack = 30
$swstack = 30
$framesize = 30

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4


Config Timer1 = Timer , Prescale = 256


Enable Interrupts

Config Portd.3 = Output                                     'R/W vom Display

Config Pind.0 = Input

Portd.3 = 0

Dim State As Bit
Dim Durchfluss As Word
Dim Durchflusstemp As Word
Dim Tempword As Word
Dim Tempword1 As Word
Dim Templong As Long
Dim Tempsingle As Single
Dim Displaywarten As Byte

State = 0

Wait 1

Cls
Cursor Off

'Hauptprogramm

Do

 If Pind.0 = 0 And State = 0 Then
  Start Timer1
  State = 1                                                 'Status 1
  Waitms 1                                                  'Entprellen
  Gosub Wait_one
  Waitms 1
  Gosub Wait_one
  Waitms 2
  Gosub Wait_zero
 End If

 If State = 1 Then
  State = 0                                                 'Status 0
  Gosub Auswerten
  Waitms 1                                                  'Evtl. Entprellen
  Gosub Wait_one
  Waitms 1
  gosub wait_one
 End If

Loop



Auswerten:

  Tempword1 = Tcnt1l
  Tempword = Tcnt1h * 256
  Tempword = Tempword + Tempword1
  Templong = Tempword * 96                                  'Zeit für 1 Liter
  Tempsingle = 31600 / Templong                             'Liter pro Sekunde
  Durchflusstemp = Tempsingle * 3600                        'Liter pro Stunde
  Durchfluss = Durchflusstemp
  Timer1 = 0
  Incr Displaywarten

  If Displaywarten = 30 Then
   Locate 1 , 1 : Lcd "Durchfluss:"
   Locate 2 , 1 : Lcd Durchfluss ; " L/h " ; Tempword ; "   "
   Displaywarten = 0
  End If

Return


Wait_one:

 Do

 Loop Until Pind.0 = 1

Return


Wait_zero:

 Do

 Loop Until Pind.0 = 0

 Stop Timer1

Return
Im Endstadium werde ich wie bei meiner anderen Anlage auch das ganze über den ICP Pin einlesen.