Wie am besten viele If then Else Anweisungen ersetzen?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • 8TO8 schrieb:

      Scheinbar reichen die Ressourcen dafür nicht aus
      da sind 256 Texte zu speichern? mit wievielen Zeichen? Bei je 4 Zeichen wäre das EEprom voll. Der Flash
      hat da mehr Luft muß aber auch den Programmcode aufnehmen. Möglicherweise könnte das mit Makros gelöst werden (1="Choose Makro Bank ", 2="-----------------------" u s w ) Aber vermutlich wird ein externes EEprom nötig.
      Der gleiche Namen darf nicht für ein Array und eine Varialbe benützt werden." Dim a as byte; Dim A(1,2,3) as Array" geht nicht. a_b und A_a würde gehen. Auch wenns lästige schreibarbeit ist sind aussagekräftige Namen Sinnvoll (Bank_zähler,Key_zähler, Text_Array(...)
    • 8TO8 schrieb:

      Wenn ich die Formel wie angegeben verwende meckert der Compiler, zum einen über A= , da erwartet er ein Array ( Array expected [A]), zum andern wegen der Formel (3 parameters expected). Scheinbar erlaubt Bascom nicht zwei Berechnungen pro Programmzeile.
      Sorry, aber der Compiler meckert zu recht. Ich will versuchen, das alles noch mal auf zu dröseln.

      Dekaman schrieb:

      Index von A = ((K-1)*4)+M (das entsprcht dem Zählwert Z ).
      An Stelle von "A" muss da eine andere Variable stehen.(z.B. "Index_A)
      So das der rückgelesene Wert z. B. Wert_R heisst.
      Dann wäre Wert_R = A( Index_A)

      8TO8 schrieb:

      Scheinbar erlaubt Bascom nicht zwei Berechnungen pro Programmzeile.
      Das ist richtig. Bascom kann pro Programmzeile nur eine Berechnung ausführen.
      D.h. , die Berechnung muss Schritt für Schritt je Zeile stattfinden.

      Index_A = K-1
      Index_A = Index_A *4
      Index_A =Index_A + M

      So das der Rücklesewert (Wert_R) mit dem Befehl Wert_R = A( Index_A) ausgelesen werden kann.
      mit dem Array B ist dann genau so zu verfahren, nur das die Variablen dann ein "B" in ihrem Namen tragen.

      Ich hoffe, ich habe mich diesmal verständlicher ausgedrückt. Wenn noch Unklarheiten sind, einfach noch mal
      nachfragen.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Erneut Hallo zusammen,

      @Dekaman:

      Vielen Dank für Deine Erklärung! Jetzt habe es auch ich verstanden. Ein wirklich praktikabler Weg. Werde es jetzt so umsetzen,
      werde allerdings aus Zeitmangel dass Ergebnis erste nächstes WE posten können. Danke nochmals für die Unterstützung! Man merkt schon, dass Du ein "alter Hase" bist.... ;-).

      @ Pluto25:

      Auch Dein Beitrag war hilfreich, hat er mir doch gezeigt, dass mein EEprom im ATMEGA32 nicht ausreichend ist. Habe nicht bedacht, dass ein Textstring ( bei mir 16 Zeichen ) mehrere Bytes benötigt, mit End of String Byte also 17. Jetzt reduziere ich meine Bänke auf 6, dann habe ich 8X4X6X17 = 3264 Bytes, da komme ich zu dem Vorschlag von....

      @ceperiga:

      ... und nehme den 1284, dann reicht es auch mit dem EEPROM Speicher. Die sind ja sogar pin kompatibel und auch pdip, was mir auf dem Steckbrett natürlich sehr entgegen kommt ;-). Auch Dir Danke für den Hinweis!

      Grüße,

      8TO8