Ich hab hier mal ein kleines Programm zum erfassen der Umdrehungen einer Welle per Lichtschranke und zum umrechnen in km/h.
Während der Messung bekomme ich auch (richtige) Werte, allerdings steht anscheinen bei der Ausgabe dann nichts im eeprom oder er hat garnichts reingeschrieben
Hab ich irgendwas wichtiges übersehn oder hat das tiefergreifende Gründe?

Code:
$regfile = "2313def.dat"
$crystal = 8000000
$baud = 9600

Ddrd.2 = 0
Ddrd.3 = 0
Portd.2 = 1
Portd.3 = 1

Taster Alias Pind.3

Dim Umdrehungen As Byte
Dim Geschwindigkeit As Single
Dim Geschwindigkeit_rund As Byte
Dim Eepromaddress As Byte
Dim Beste As Byte



On Int0 Onint0
Config Int0 = Falling
Enable Int0
Enable Interrupts

Print "test"                                                'sicherstellen, dass UART funktioniert

Waitms 500


Main:
Print "main"
Do
   If Taster = 0 Then
      Waitms 300
      Gosub Messung
   End If
   If Eepromaddress = 255 Then
      Gosub Ausgabe
   End If
Loop




Messung:
Print "messung"
Do
   Umdrehungen = 0
   Waitms 1000
   Geschwindigkeit = Umdrehungen * 0.000142857              'Stecke in m / 1000 * 3600 (bei messzeit = 1s, sonst Strecke in m = Geschwindigkeit in m/Xs)
   Geschwindigkeit = Geschwindigkeit * 3600
   Geschwindigkeit_rund = Round(geschwindigkeit)
   Writeeeprom Geschwindigkeit_rund , Eepromaddress         'geschwindigkeit in jeweils nächste address schreiben
   Print Geschwindigkeit_rund                               'nur testweise, um zu sehen, ob auch ein signal anliegt
   Incr Eepromaddress
        If Geschwindigkeit_rund > Beste Then                'wenn gerade gemessene besser als bisher beste,...
           Beste = Geschwindigkeit_rund                     '...dann beste mit zuletzt gemessener geschwindigkeit ersetzen
        End If
      If Eepromaddress = 255 Or Taster = 0 Then
         Waitms 300
         Return
      End If
Loop


Ausgabe:
Print "ausgabe"
Do
   If Taster = 0 Then
      Waitms 300
      Eepromaddress = 0
      Print Beste
         Do
            Readeeprom Geschwindigkeit_rund , Eepromaddress 'geschwindigkeit aus jeweiliger address auslesen
            Print Geschwindigkeit_rund                      'und ausgeben
            Incr Eepromaddress
            Waitms 500
               If Eepromaddress = 255 Then
                  Print "end"
                  Return                                    'zurück zu main
               End If
         Loop
   End If
Loop




Onint0:
   Incr Umdrehungen
Return