- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 2 von 2

Thema: Bascom Simulator Probleme

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311

    Bascom Simulator Probleme

    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):

    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
    Der Code macht eigentlich nix schwieriges:
    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

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Entschuldigung, ist mir schleierhaft, weswegen dieses Topic jetzt 2 mal im Forum steht. Bitte dieses hier ignorieren und löschen!
    Danke

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress