Hallo,
ich wollte ein von mir geschriebenes BASIC-Programm im BASCOM-eigenen Simulator testen.
Meine BASCOM-Version ist eine Demoversion, die aktuellste, die im Moment zum Download angeboten wird.
Nun zum Problem:
Der Simulator scheint ziemlich langsam zu sein, eine Sekunde im Timer verbraucht circa 3 Sekunden auf dem Rechner, wobei 99% CPU-Leistungbenutzt werden (selbst, wenn der Simulator wieder steht (?))
Mit zunehmender Komplexität des Programms dauert die Verarbeitungszeit immer länger.
Im Simulatorfenster erscheint häufig die Meldung "Stack pointer and software stack overlap".
Hier der Code des Programms (ist nicht der schönste, ist das erste mal, dass ich BASIC lerne):
Der Code macht eigentlich nix schwieriges:Code:'$sim $regfile = "m8def.dat" $crystal = 8000000 $framesize = 16 $swstack = 8 $hwstack = 32 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 Dim Hours As Integer Dim Mins As Integer Dim Secs As Integer Dim Dchge As Integer ' Hours = 24 ' Mins = 60 ' Secs = 60 ' Dchge = 0 Hours = 0 Mins = 0 Secs = 5 Dchge = 0 Cls Do If Dchge = 0 Then Locate 1 , 1 Lcd "Verbleibend:" End If If Dchge = 1 Then Locate 1 , 1 Lcd "Wechsel!" End If If Hours = 0 Then If Mins = 0 Then If Secs = 0 Then Hours = 24 Dchge = 1 End If End If End If If Mins = 0 Then If Secs = 0 Then If Hours > 0 Then Mins = 60 Decr Hours End If End If End If If Secs = 0 Then Secs = 59 Decr Mins End If Locate 2 , 1 Lcd Hours ; "h:" ; Mins ; "m:" ; Secs ; "s :)" Loop End Isr_von_timer1: 'ISR von Timer1 Timer1 = 34285 'Timer1 soll wieder von 34285 wegzählen Decr Secs Return
Auf dem Display steht die verbleibende Zeit bis zum "Wechsel", ich habe das im Programm so eingestellt, dass es nur noch 5 sekunden sind, die bis zum wehcsel verbleiben.
Habt ihr eine Idee?
Vielen Dank,
grüße Simon







Zitieren

Lesezeichen