Hallo, ich arbeite an einem Rundenzähler mit Stoppuhr.
Zur Zeit starte ich alles noch mit zwei Tastern, später werden die dann durch eine Lichtschranken ersetzt.

Mein Ziel ist es, später folgende bereiche zu ermitteln.

-10 Runden runterzuzählen
- die schnellste Rundenzeit anzuzeigen
- top speed
-Ton beim passieren der Lichtschranke
-Akustische Startampel

Momentan bin ich noch lange nicht soweit.
Vielleicht kann mir ja jemand dabei helfen oder mir über die Schulter schaun und mich eventuell auf fehler hinweisen.

hier ist der erste Versuch.

Messstrecke sind 100 cm
Es soll erstmal nur die zeit gemessen werden und dann in km/h angezeigt werden.
Den flag lass ich mir mit absicht anzeigen.



Code:
 $regfile = "m8def.dat"
 $crystal = 16000000

 Config Lcd = 20 * 4
 Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.4 , Db7 = Portb.3 , Db6 = Portb.2 , Db5 = Portb.1 , Db4 = Portb.0
 Config Lcdbus = 4
 Cursor Off

  Cls

Config Pind.2 = Input
Config Pind.3 = Input
Portd.2 = 1
Portd.3 = 1
Config Portd.2 = 0
Config Portd.3 = 0


Dim Minuten As Byte
Dim Sekunden As Byte
Dim Flag As Byte
Dim Speed As Integer
Dim Strecke As Single

Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Enable Interrupts


Minuten = 0
Sekunden = 00
Flag = 0
Speed = 0
Strecke = 100

Declare Sub Start1
Declare Sub Stop1
Declare Sub Reset1

'---------------------------------------------
Do

Debounce Pind.2 , 0 , Start1 , Sub
Debounce Pind.3 , 0 , Stop1 , Sub
Debounce Pind.2 , 0 , Reset1 , Sub And
Debounce Pind.3 , 0 , Reset1 , Sub

 Locate 2 , 2

Lcd "Zeit:    " ; Minuten ; ":" ; Sekunden ; " "
Locate 1 , 1
Lcd Flag

Locate 1 , 6
Lcd Speed ; "km/h"

Loop
'---------------------------------------------
Start1:
Enable Timer1
Return

Stop1:
Disable Timer1
   Speed = Flag * 0.0036
   Speed = Strecke / Flag

  Flag = 0
  Reset Timer1
  Sekunden = 0

Return

Reset1:
Reset Timer1

Locate 1 , 1
Lcd "Reset"
Wait 1
Cls
Sekunden = 0
Minuten = 0
Flag = 0
Speed = 0

Return

'--------------------------------------------
Timer_irq:
  Timer1 = Timervorgabe


    Incr Sekunden

  If Sekunden = 60 Then
    Incr Minuten
    Sekunden = 00
  End If

  Incr Flag


Return