Also ich hab bei Bascom 2 Code gefunden, müsstest du dir allerdings selber erklären. Ich denke Trabukh meinte pulsin1.bas:
bzw. Pulsein2.bas:Code:Declare Function Lopulse() As Byte Dim Value As Byte Const Inputpin = $10 , 0 ' Inputpin Alias Pind.0 Config Portb = Output Portb = &HFF Config Timer0 = Timer , Prescale = 1 On Timer0 Overflow_isr Nosave Enable Timer0 Enable Interrupts Do Value = Lopulse() Portb = Value Loop End Function Lopulse() As Byte $asm Hilo: Sbic Inputpin ' wait for Hi-Lo on inputpin Rjmp Hilo $end Asm Tcnt0 = 0 ' reset Timer0 Start Timer0 $asm Lohi: Sbis Inputpin ' wait for Hi-Lo on inputpin Rjmp Lohi $end Asm Stop Timer0 ' stop Timer0 after 26 cycles minimum Lopulse = Tcnt0 End Sub ' overflow isr stops timer0 and set tcnt0 to zero Overflow_isr: !push R24 Stop Timer0 Tcnt0 = 0 !pop R24 Return
MFG MoritzCode:Declare Function Lopulse() As Word Dim Value As Word Dim Time As Word Inputpin Alias Pind.0 Config Portb = Output Portb = &HFF Do Value = Lopulse() Portb = Low(value) Loop End Function Lopulse() As Word ' Local Time As Word While Inputpin <> 0 : Wend Time = 0 ' reset Timer0 While Inputpin = 0 Incr Time Wend Lopulse = Time End Sub






Zitieren

Lesezeichen