Ich habe in einem Lehrbuch einen Beispielcode gefunden und versucht diesen auf mein Beispiel umzuschreiben. Ziel ist es die Dauer des High-Pulses an PortB.0 zu messen. Leider funktioniert das Programm in der jetzigen Form nicht. Wo liegt mein Fehler?

Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000


'LCD:
 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.1 , Db6 = Portc.4 , Db7 = Portc.0 , E = Portc.2 , Rs = Portc.3
 Config Lcdbus = 4

'Variable:
 Dim Pulswert As Word

'Funktionen:
 Declare Function Hochpuls() As Word

'Port B.0:
 Config Pinb.0 = Input
 Set Portb.0.0
 Pulsmesserpin Alias Pinb.0

'Timer1:
 Config Timer1 = Timer , Prescale = 1024
 Enable Timer1
 On Timer1 Interrupttimer1 Nosave
 Enable Interrupts

Cls
 Do
  Cursor Off Noblink
  Locate 1 , 1
  Pulswert = Hochpuls()
  Lcd "Puls:" ; Pulswert
  Loop
 End


 Function Hochpuls() As Word
  While Pulsmesserpin <> 1 : Wend              'warte auf Lo-Hi an PB0
   Tcnt0 = 0                                                'reset timer1
    Start Timer1
    While Pulsmesserpin = 1 : Wend
    Stop Timer1                                 
    Hochpuls = Tcnt0
  End Function Hochpuls()

'Overflow Timer1 stoppt Timer1 und setzt TCNT1 zu Null (timeout)
  Interrupttimer1:
    !push r24
    Stop Timer1
    Tcnt0 = 0
    !pop r24
    Return