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
Lesezeichen