Hallo Leute,

kann mir jemand von euch bitte erklären, warum ich nicht mehr als 12 mal auf eine Sprungmarke im Programm springen kann?

Folgendes Problem: Ich wähle im ersten Menüpunkt zb. Frequenz aus. Dann werde ich im nächsten Menüpunkt aufgefordert die gewünschte Frequenz einzustellen. Jetzt kann ich aber nur 12 mal hoch ODER 12 mal runter ODER 5mal hoch und 7mal runter gehen bevor der Controller resetet.

(Ich hofe ihr habt verstanden wie ich das meine)

Jetzt habe ich die Möglichkeit das Programm zu debugen: Das Programm hängt sich beim 13ten Durchlauf an folgender Stelle auf: LCD F (siehe Code).

Code:
$regfile = "m32def.dat"
$crystal = 1000000
$baud = 9600

Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6 , E = Porta.2 , Rs = Porta.1
Config Lcd = 16 * 2

Initlcd                                                     'LCD initialisieren

Config Porta.0 = Output                                     'PortA als Output setzten
Config Portd = Input                                        'PortD Als Input Setzten


Dim F As Integer
Dim D As Integer
Dim Puls As Integer
Dim Pause As Integer


Taste_1 Alias Pind.2
Taste_2 Alias Pind.3
Taste_ok Alias Pind.4

F = 13
Puls = 150
Pause = 150


Config Debounce = 100                                       'Entprellzeit für Tester auf 30ms
Waitms 20                                                   'warte wegen LCD



                                                               'Programm Start

'+---------------------------------+
'| Startbildschirm & erste Auswahl |
'+---------------------------------+

   Cls                                                      'lösche LCD
   Locate 1 , 1
   Lcd "1-> Frequenz"
   Locate 2 , 1
   Lcd "2-> Puls/Pause"


   Do
      Debounce Taste_1 , 1 , Fstart , Sub
      Debounce Taste_2 , 1 , Puls_start , Sub
   Loop

'+---------------------+
'| Frequenz einstellen |
'+---------------------+

   Fstart:
      Cls
      Locate 1 , 1
      Lcd "Frequenz =    Hz"
      Locate 1 , 12
      Lcd F                                           '<--- genau hier hängt er
      Locate 2 , 1
      Lcd "UP    OK    DOWN"

      Do
         Debounce Taste_1 , 1 , Fup , Sub
         Debounce Taste_2 , 1 , Fdown , Sub
         Debounce Taste_ok , 1 , Fok , Sub
      Loop


   Fup:
   F = F + 1
   Waitms 15
   Gosub Fstart
   'Return

   Fdown:
   F = F - 1
   If F <= 0 Then
   F = 0
   End If
   Waitms 15
   Gosub Fstart
   'Return

.
.
.
.   'Das Programm geht eigentlich noch weiter, hier aber uninteresant
Bitte helft mir, ich bin am verzweifeln.

Ach ja, einen anderen Controller habe ich auch schon ausprobiert.