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







Zitieren

Lesezeichen