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

Thema: Bitte um Hilfe bei Codeproblem

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.04.2005
    Ort
    Pforzheim
    Alter
    43
    Beiträge
    163

    Bitte um Hilfe bei Codeproblem

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute,

    ich hab da ein kleines Problem. Und zwar:

    Warum springt mein Controller nach dem Reset sofort zur Sprungmarke "Fstart"??? Er überspringt also das erste Menü.....

    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
    
    ldi r24, $24                                                'die Anpassungen für das Reichelt-LCD(162C)
    rcall _lcd_control                                          'die Anpassungen für das Reichelt-LCD
    ldi r24, $9                                                 'die Anpassungen für das Reichelt-LCD
    rcall _lcd_control                                          'die Anpassungen für das Reichelt-LCD
    ldi r24,$20                                                 'die Anpassungen für das Reichelt-LCD
    rcall _lcd_control                                          'die Anpassungen für das Reichelt-LCD
    
    Initlcd                                                     'LCD initialisieren
    
    Config Porta.0 = Output                                     'PortA als Output setzten
    Config Portd = Input                                        'PortD Als Input Setzten
    Portd = &B11111111                                          'Internen PullUp´s an PortD aktivieren
    
    Dim Frequenz As Integer
    Dim Izeit As Integer
    Dim Pzeit As Integer
    
    Dim F As Integer
    Dim A As Integer
    Dim B As Integer
    Dim C As Integer
    Dim D As Integer
    
    Config Debounce = 30                                        'Entprellzeit für Tester auf 30ms
    Wait 1                                                      '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"
    
       While Pind.2 = 0 Or Pind.3 = 0
          Debounce Pind.2 , 0 , Fstart , Sub
          Debounce Pind.3 , 0 , Fstart , Sub
       Wend
    
    
    
    
    '+---------------------+
    '| Frequenz einstellen |
    '+---------------------+
    
       Fstart:
       F = 10                                                   'setzt F =10
       Cls
       Locate 1 , 1
       Lcd "Frequenz =   Hz"
       Locate 1 , 12
       Lcd F
       Locate 2 , 1
       Lcd "1->ändern OK->OK"
    
    
       While Pind.4 = 0 Or Pind.2 = 0
          Debounce Pind.2 , 0 , Fok , Sub
          Debounce Pind.4 , 0 , Frequenznok , Sub
       Wend
    
    
    .
    .
    .
    .
    .
    MfG Ich

    -------------------------------------------------------------
    http://www.lorenzschulz.de/Roboter.html

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    wenn pind.2 und pind.3 1 sind, löscht er ja sofort wieder das LCD.
    Und wenn einer der Pins 0 ist, geht er auch dahin.
    Das erste Menü wird also nicht zu sehen sein.

    Du hast keine Hauptschleife im Programm, kein Return, kein End..
    Willst du das alles mit Goto's machen ?

    Übrigens, das Reichelt 162C geht doch auch ohne extra Anpassung.
    Ich verwende die recht oft.

    Was bewirkt denn der extra LCD- Code?

    Gruß
    Christopher

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.04.2005
    Ort
    Pforzheim
    Alter
    43
    Beiträge
    163
    Danke, hast recht gehabt mit dem ersten teil
    Hauptschleife? Return?End? Habe ich alles nicht! Ist vielleicht nicht schön, aber funzt auch ohne.
    Mache das alles mit GOSUB. Hast du mir vielleicht ne Hompage, oder ein tutorial, wo das mit der Hauptschleife, END ,RETURN und so erklärt wird?

    Bei mir macht das Display ärger wenn ich die Anpassungen(die ich aus einem anderen Forum habe) weglasse. Ich weiss aber nicht was die bewirken.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Ist vielleicht nicht schön, aber funzt auch ohne.
    im Prinzip isses eigentlich völlig egal, Hauptsache das Programm läuft

    Ich mach's halt so, daß ich im Hauptprogramm eine Schleife habe, die dann weiter verzweigt.

    Du mußt bei Tasterabfragen ja normalerweise immer wieder Abfragen, mußt also sowieso im Programm irgendwie zurückspringen.

    Bei Gosub brauchst du ein Return, sonst läuft das Programm einfach weiter und springt nicht mehr zurück, wie es soll.

    Ich mach's in etwa so:

    Code:
    
    Taster1 Alias Pind.0
    Taster2 Alias Pind.1
    
    Do
       Gosub Tasterabfrage
    Loop
    End                                                         'end program
    
    Tasterabfrage:
      If Taster1 = 0 Then
          Gosub Label1
       End If
    
       If Taster2 = 0 Then
          Gosub Label2
       End If
    Return
    
    
    
    Label1:
       Cls
       Lcd "HAllo"
    Return
    
    Label2:
       Cls
       Lcd "TEST"
    Return
    
    
    '(Man sollte allerdings noch abfragen, ob der Menüpunkt schonmal abgefragt wurde,
    'sonst flackert das Display durch die dauernden CLS während dem Tastendrücken und man sieht auch nicht viel ) ;).
    'Oder nur eine Zeile löschen / überschreiben etc..
    
    
    
    'Das Return läßt das Programm an der Stelle nach dem Gosub-Aufruf weiterarbeiten, springt also zurück.
    ' Im Gegesatz zum GOTO, bei dem lediglich zum Label gesprungen wird und nicht zurück.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.04.2005
    Ort
    Pforzheim
    Alter
    43
    Beiträge
    163
    Ja, allerdings ist es bei mir aussgeschlossen, dass ich wieder zurück in die vorherige schleife komme. ich gehe nämlich immer weiter ins Menü herrein.

    Danke aber fü die Tipps.

Berechtigungen

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

LiFePO4 Speicher Test