Code:
$regfile = "m8def.dat" ' Inizialiesierung Microkontroller
$crystal = 3686400 ' Quarz Frequenz
Declare Sub Key1
Declare Sub Key2
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4 ' LCD Konfiguierung
Cursor Off ' Cursor auf dem LCD Ausblenden
Deflcdchar 0 , 32 , 32 , 32 , 32 , 12 , 16 , 16 , 31 ' Fahrrad Modul 1
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 30 , 8 , 30 ' Fahrrad Modul 2
Deflcdchar 2 , 7 , 9 , 17 , 17 , 18 , 16 , 8 , 7 ' Fahrrad Modul 3
Deflcdchar 3 , 4 , 18 , 9 , 8 , 8 , 8 , 16 , 32 ' Fahrrad Modul 4
Deflcdchar 4 , 9 , 9 , 10 , 10 , 31 , 2 , 1 , 32 ' Fahrrad Modul 5
Deflcdchar 5 , 28 , 18 , 9 , 5 , 29 , 1 , 2 , 28 ' Fahrrad Modul 6
On Icp1 Oncapture ' Interrupt Routine deklarieren
Dim Wcapture As Long 'Variablen Declaration
Dim Geschw As Single 'Variablen Declaration
Dim Endgeschw As Single 'Variablen Declaration
Dim Menuepunkt As Integer
Dim Anzeigezahl As Single
Dim Einheit As String * 6
Dim Zaehler As Long
Dim Strecke As Single
Dim Zeit As Integer
Menuepunkt = 0
Zaehler = 0
Strecke = 0
Ddrd = &B0000001
Portd.2 = 1
Portd.3 = 1
Ddrb.0 = 0 ' Pin PB0 Eingang (Sensor + r. Taster)
Portb.0 = 1 ' PullUp von Pin PB0 aktivieren
'\/Begrüßungsbildschirm\/
Cls
Locate 1 , 1
Lcd "Fahrradtacho"
Locate 2 , 1
Lcd "Version 1.0"
Locate 1 , 14
Lcd Chr(0)
Locate 1 , 15
Lcd Chr(1)
Locate 2 , 13
Lcd Chr(2)
Locate 2 , 14
Lcd Chr(3)
Locate 2 , 15
Lcd Chr(4)
Locate 2 , 16
Lcd Chr(5)
Waitms 1500
Cls
Locate 1 , 1
Lcd "----------------"
Locate 2 , 3
Lcd "Martin Gluch"
Waitms 2000
Cls
Locate 1 , 5
Lcd "Computer"
Locate 2 , 6
Lcd "bereit"
Waitms 1000
'/\Begrüßungsbildschirm/\
Tccr1a = &B00000000
Tccr1b = &B10000101
Timsk.ticie1 = 1
Sreg.7 = 1
Do
Debounce Pind.2 , 0 , Key1 , Sub
Debounce Pind.3 , 0 , Key2 , Sub
Cls
If Menuepunkt = 0 Then
Anzeigezahl = Endgeschw
Locate 2 , 1
Lcd "Geschwindigkeit"
Locate 1 , 12
Einheit = " km/h "
End If
If Menuepunkt = 1 Then
Anzeigezahl = Zeit
Locate 2 , 1
Lcd "Zeit pro Umdreh."
Locate 1 , 12
Einheit = " ms "
End If
If Menuepunkt = 2 Then
Anzeigezahl = Zaehler
Locate 2 , 1
Lcd "Counter"
Einheit = " "
End If
If Menuepunkt = 3 Then
Anzeigezahl = Strecke \ 1000
Locate 2 , 1
Lcd "Strecke"
Einheit = " km "
End If
Locate 1 , 6
Lcd Anzeigezahl
Locate 1 , 11
Lcd Einheit
Waitms 70
Loop
Oncapture:
Timer1 = Timer1 - Capture1
Wcapture = Capture1
Wcapture = Wcapture \ 3.600
'Wcapture = Wcapture \ 1000
Geschw = 2.03 / Wcapture ' 2,03 durch beliebigen Reifenumfang ersetzen
Endgeschw = Geschw * 360
Endgeschw = Endgeschw * 10
Zaehler = Zaehler + 1
Strecke = Strecke + 2.03
Zeit = Wcapture
Portd.0 = 1
Waitms 1
Portd.0 = 0
Return
Sub Key1
Cls
If Menuepunkt = 0 Then
Locate 2 , 1
Lcd "Zeit pro Umdreh."
End If
If Menuepunkt = 1 Then
Locate 2 , 1
Lcd "Counter"
End If
If Menuepunkt = 2 Then
Locate 2 , 1
Lcd "Strecke"
End If
If Menuepunkt = 3 Then
Locate 2 , 1
Lcd "Geschwindigkeit"
End If
Menuepunkt = Menuepunkt + 1
If Menuepunkt = 4 Then
Menuepunkt = 0
End If
End Sub
Sub Key2
Zaehler = 0
Cls
Locate 1 , 1
Lcd "Counter Reset"
Waitms 500
End Sub
End
Gruß
Lesezeichen