mal das test programm:
Code:
$regfile = "m8def.dat"
$crystal = 3686400 'ext. Quarz
Config Lcd = 16 * 2 'LCD-Typ
Config Lcdmode = Port 'Ports zur Ansteuerung benutzt
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
On Icp1 Oncapture 'Port B0 ist Interupt
Dim Wcapture As Word
Dim Stopuhr As Word
Ddrb.0 = 0 'Eingang B0 Drehzahl
Ddrb.1 = 1 'Ausgang B1 LED 6000U/min
Ddrb.2 = 0 'Eingang B2 KIPS
Ddrb.3 = 0 'Eingang B3 LCD normal/einfrieren
Portb.0 = 1 'Eingang hochziehen
Portb.1 = 0 'Ausgang LED
Portb.2 = 1 'Eingang hochziehen
Portb.3 = 1 'Eingang hochziehen
Dim Merker As Bit 'Selbsthaltung KIPS Eingang B
Dim Timerword As Word 'Rückwärtszähler als Timer
Timerword = 15000
Tccr1a = &B00000000 'Timer1 Register A
Tccr1b = &B10000101 'Timer1 Register B Bit7:noise cancel, Bit6: fall.Flanke
Timsk.ticie1 = 1 'Capture IR ein
Sreg.7 = 1 'IR global ein
Main:
If Pinb.2 = 0 Then 'KIPS Stellung
Set Merker 'Selbsthaltung
Set Portb.1 'Test Ausgang
End If
If Merker = 0 Then 'Timer LCD Anzeige
Decr Timerword
End If
If Timerword = 10000 Then
Cls 'Display löschen
Lcd Wcapture 'neuen Wert in Display schreiben
End If
If Timerword = 10000 Then
Timerword = 15000
End If
Goto Main
Oncapture:
Timer1 = Timer1 - Capture1
Wcapture = Capture1 'Anz in 1/100s
Wcapture = 10000 / Wcapture 'Anzeige in Zehntel Hz
Wcapture = Wcapture * 6 'Anzeige in U/min
'If Wcapture > 6000 Then 'LED an über 6000U/min
'Set Portb.1
'End If
Return
End
hab noch n fehler entdeckt. Eingang hochgezogen und benutze ind. Näherungsschalter, der ein 1 signal bei betätigung liefert. werd das erstmal beheben..
Lesezeichen