strunz
17.10.2006, 17:17
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).
$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.
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).
$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.