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