Probier´s mal so:
Code:
$regfile = M8ref.dat
$crystal = 1000000
Config Int0 = Rising 'Interrupt bei Impulsbeginn
On Int0 Impuls_start
Enable Int0
Config Int1 = Falling 'Interrupt bei Impulsende
On Int1 Impuls_stop
Enable Int1
Enable Interrupts
Config Timer0 = Timer , Prescale = 8
Dim Kanal As Byte 'Kanal = Zählvariable'
Dim Impuls(5) As Word 'Array für bis zu 5 Impulswerte
Do 'Hier ist Platz für´s Hauptprogramm :-)
Loop
Impuls_start: 'Irgendein Impuls beginnt:
Start Timer0 'Timer beginnt zu zählen
Kanal = Pinc 'An welchem Port ist der Impuls?
Kanal = Kanal And &B00011111 'Sicherheitshalber Löschen der Bits 7, 6 und 5
Select Case Kanal
Case 4 : Kanal = 3 'd.h. PortC war 00000100
Case 8 : Kanal = 4 'd.h. PortC war 00001000
Case 16 : Kanal = 5 'd.h. PortC war 00010000
Case Else
End Select
Return
Impuls_stop: 'Ende des Impulses:
Stop Timer0 'Timer anhalten,
Impuls(kanal) = Timer0 'Wert retten und Array-Variabler zuweisen,
Timer0 = 0 'und Timer rücksetzen.
Impuls(kanal) = Impuls(kanal) * 8 'Umrechnung in µS
Return
Als Ergebnis stehen Dir dann Impuls(1) bus Impuls(5) zur Verfügung.
Gruß,
Daniel
Lesezeichen