Hallo,
weil ich eigentlich auch gerade an einen Drehzahlmesser gedacht habe (und ich nehme an, es handelt sich noch um das Thema mit dem Benzinmotor)
habe ich das mal ausprobiert.
Ich habe leider auch nur einen ATmega16 herumliegen, das Programm ist also auch für Mega16, jedoch sollte es reichen, einfach die Pins, an die das Display angeschlossen ist, zu ändern.
Der Eingang ist Int0 (den es ja auch beim Mega8 gibt).
Die Umrechnung ist jetzt so ausgelegt, dass der Timer1 1Mio mal pro Sekunde tickt. Wenn man z.B. einen Quarz anderer Frequenz verwenden möchte müsste man das halt entweder im Prescaler oder in der Umrechnung ändern.
Code:
$regfile "M16def.dat"
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal = 1000000
'Initialisiere Timer1
Config Timer1 = Timer , Prescale = 1
Enable Timer1
On Timer1 Isr_timer1
'Das LCD konfigurieren
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
'Den Int0 konfigurieren, er dient zum erfassen der Pulse
Config Int0 = Rising
Enable Int0
On Int0 Isr_puls
'Die Interrupts global aktivieren
Enable Interrupts
'Variablen Definieren
Dim Timer1_overflows As Byte
Dim Ticks As Long
Dim Rpm As Long
'Variable auf Null setzen, nur um sicher zu gehen
Timer1_overflows = 0
'Anfang Hauptprogramm +++++++++++++++++++++++++++++++++++++++++
Do
'Die Ticks in Umdrehunge pro Sekunde umrechnen
Rpm = 60000000 / Ticks
Cls
Locate 1 , 1
Lcd "Umdrehungen: "
Locate 2 , 1
Lcd Rpm
'Eine viertelsekunde warten, damit das Display nicht zu häufig
Waitms 250
Loop
'Ende Hauptprogramm +++++++++++++++++++++++++++++++++++++++++
Isr_puls:
'Es wurde ein Puls registriert
'Anzahl der Ticks ermitteln
Ticks = Timer1_overflows * 65536
Ticks = Ticks + Timer1
'Zurücksetzen
Timer1 = 0
Timer1_overflows = 0
Return
Isr_timer1:
'Timer 1 ist übergelaufen
Timer1_overflows = Timer1_overflows + 1
Return
Der Code ist getestet und hat bei mir funktioniert.

Natürlich, es wurde ja schon Code gepostet, aber das habe ich jetzt gerade eben ausprobieren müssen und villeicht nützt es dir ja etwas 
EDIT: Habe gerade gesehen, dass die Textphrase "Umdrehungen * 1/min: " garicht platz hat am LCD, siehe Foto.
Also im Code auf "Umdrehungen: " geändert...
Mfg Thegon
Lesezeichen