Der Schlingel will das "ELSE" in einer eigene Zeile haben, wenn ich mich nicht täusche.
Hallo,
da ich mich mit der Programmiersprache Basic bisher noch nie "herumgeschlagen" habe (meistens habe ich mit Pascal oder C gearbeitet) kommen mir beim Zusammenbasteln meines ersten Programms ein paar kleine Fragen.
In C ist es selbstverständlich (in Basic sicher auch) If-Bedingungen zu verschachteln à la
Wie bekomme ich analoges mit Basic hin? Ich werde aus der spärlichen Hilfe zu Bascom und der aus dem Internet nicht sehr schlau.Code:if (a>b) { if (x!=y) {...} } else { ... }
Mein erster Entwurf war
Der Compiler sagt Unknown Statement ["Else Decr" ...]Code:If Secs = 0 Then Secs = 59 Decr Mins If Mins = 0 Then Mins = 59 Decr Hours If Hours = 0 Then Hours = 23 Dchge = 1 Else Decr Hours Else Decr Mins End If
Deswegen komme ich im Moment nicht weiter. Welchen Fehler mache ich?
Vielen Dank,
Simon
P.S.: Ich habe auch schon umgestellt, alles hinter's betroffene IF zu schieben und überall eine End If Anweisung zwischenzuschieben etc. hänge aber fest.
Der Schlingel will das "ELSE" in einer eigene Zeile haben, wenn ich mich nicht täusche.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo Simon,
mach aus
Else Decr Hours
Else Decr Mins
End if
Else
Decr Hours
End if
Else
Decr Mins
End if
dann klapt's.
1. Else muss alleine in einer Zeile stehen
2. Die innere If-Schleife braucht ein eigenes End if
Gruß
Detlef
Aaaah, wieder was gelernt.
Vielen Dank, steht leider nirgends, dass das in eine eigene Zeile will.
Noch etwas: ich habe mir mal die Beispiele angesehen wie man einen sekundengenauen Timer einrichtet. Auf einem LCD lasse ich die Sekunden herunterzählen. Mir fällt aber auf, das während der Simulation eine Sekunde circa 3 Sekunden dauert. Liegt das an der falschen Programmierung (habe die Konfiguration des Timers einfach aus dem Wiki übernommen) oder daran, dass der Simulator zu langsam ist?
Grüße Simon
Hallo Simon,
kann es sein, dass du die Quarzfrequenz nicht oder falsch angegeben hast?
Gruß
Detlef
Eigentlich nicht, weil ich habe das Beispiel ja direkt übernommen:
SimonCode:$regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1 Enable Timer1 'schalte den Timer1 ein On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1 Enable Interrupts Timer1 = 34285 'Timer1 soll schon von 34285 wegzählen
Hallo Simon,
ich bin auch noch nicht richtig fit in Bascom. Was ich sehe ist, dass eine Quarzfrequenz von 8 MHz angegeben ist. Falls du einen anderen Quarz verwendest, musst du die Zeile
$crystal = 8000000
entsprechend ändern.
Falls das nichts hilft, solltest du deine Frage unter einem neuen Themennamen noch einmal stellen.
Gruß
Detlef
Hm.
Ich verwende im Prinzip ja keinen Quarz sondern benutze gerade den Simulator der bei Bascom dabei ist.
Meinst du nicht, dass der einfach saulahm sein könnte? Immerhin braucht er 99% CPU-Leistung an diesem Rechner.
ich benutze bei Bascom den simulator zwar nich aber in der uni aufm hc6811 simulator isses genau das gleiche, 99% cpu und richtig langsam
@veit,
füge deinem Listing doch mal die Compiler-Direktive $sim hinzu, dann sollte es mit der Simulation klappen.
cu
Matula
Lesezeichen