Werte-Tabelle anzeigen

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

  • Werte-Tabelle anzeigen

    Hallo Zusammen,

    ich brauche etwas Support von Euch, es hakt wieder mal.
    In einer Tabelle namens „Werte“ habe ich unter DATA drei numerische Zahlen
    abgelegt.
    Diese Zahlen wollte ich im Terminal-Fenster anzeigen lassen, geht nicht.
    Ich habe mich an der Bascom-Hilfe orientiert.
    Was mache ich falsch ?
    Bitte um Korrektur wenn ich quatsch schreibe.
    Also, mit Restore Werte hole ich die Zahlen aus der Tabelle.
    Read Zaehler läd diese in die Variable Zaehler.
    Count gibt an, dass in der Tabelle 3 Zahlenwerte sind und Print sollte diese
    eigentlich im Terminal erscheinen lassen.
    Dort erscheinen aber nur ASCII-Zeichen.
    Freue mich auf den einen o. anderen Tipp von Euch.
    Danke schon mal.

    Gruß
    Stift7

    Code ist:

    Quellcode

    1. Dim Count As Byte
    2. Dim Zaehler As Byte
    3. Restore Werte
    4. For Count = 1 To 3
    5. Read Zaehler : Print Count ; ‘‘ ‘‘ ; Zaehler
    6. Next
    7. Werte:
    8. Data 66 , 33 , 100
    Alles anzeigen
  • stift7 schrieb:

    Freue mich auf den einen o. anderen Tipp von Euch.
    Du kannst es auch mal so probieren

    BASCOM-Quellcode

    1. Dim Count As Byte
    2. Dim Zaehler As Byte
    3. 'Restore Werte
    4. For Count = 0 To 2
    5. Zaehler = Lookup(count , Werte)
    6. Print Count ; " " ; Zaehler
    7. Next
    8. Werte:
    9. Data 66 , 33 , 100
    Alles anzeigen
    Und die Anführungszeichen bei deinem Print sind keine sondern Apostrophe (zumindestens in deinem oben gezeigten Quellcode).
    Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
  • Hallo tschoeatsch,
    hallo djmsc,

    danke für eure schnelle Antwort.
    Framesize, Baud-Rate, hwstack u.s.w., habe ich kontrolliert, alles i.o.
    Dein code, djmsc, habe ich auch probiert, geht aber auch nicht.
    Irgendwo ist hier ein blöder Fehler drin, vielleicht hardwaremäßig.
    Wenn ihr meint, dass mindestens ein Code von den beiden funktionieren muss,
    kann es ja nur ein Hardwarefehler sein.
    Ich suche mal weiter und melde mich wieder.
    bis dann ...
  • Hallo stefanhamburg

    mit einfach nur PRINT und eine Zahl dahinter, hatte ich auch schon probiert. Ohne Erfolg.
    Aber zwischenzeitlich habe ich den Fehler eingekreist, ein Hardwarefehler.
    Mein Entwicklungsboard mit dem tiny2313 oder der 2313 selbst ist defekt.
    Auf einem Board mit einem Mega8 hat es funktioniert.
    ... mir reicht es, morgen mehr.
  • stift7 schrieb:

    Wenn ihr meint, dass mindestens ein Code von den beiden funktionieren muss,
    keiner der Codes funktioniert so, im Hintergrund fügt Bascom noch Stackwerte, die in den Optionen hinterlegt sind dazu. Die Werte kennen wir nicht und die sind oft zu klein.
    Hier solltest du besser dein Programm posten, so wie du es auch compilierst, dann sehen wir, ob die Werte auch vorhanden sind (und können dort den Fehler lokalisieren, oder aussschließen)

    djmsc schrieb:

    ast du auch Rx und Tx über Kreuz angeschlossen?
    Den Fehler würde ich ausschließen, da ja Zeichen ankommen.

    stift7 schrieb:

    ber zwischenzeitlich habe ich den Fehler eingekreist, ein Hardwarefehler.
    Mein Entwicklungsboard mit dem tiny2313 oder der 2313 selbst ist defekt.
    Du machst es dir leicht. Ein Hardwarefehler liegt nicht vor, wenn Zeichen ankommen.
    Es gibt hier mindestens 2 Gründe, fehlender Stack (besonders wichtig für den Befehl Print) und falsche Baudrate.
  • Hallo Michael,
    hier ist der Code der auf dem Mega8 funktioniert. Aus Bascom-Hilfe.
    Im Terminal erscheint dann: 1 ... 66
    2 ... 33
    3 ... 100
    Der Code von djmsc (Post 3) geht nicht, Terminal zeigt: 1 ... 33
    2 ... 100
    1000 ... 66
    auch auf dem Mega8.
    Schau jetzt mal was mit dem tiny2313 los ist.
    Übrigens, das Ganze ist kein Projekt, sondern sollte eine "Fingerübung" sein.
    Wollte mehr über For Next Schleifen und Werte-Tabellen erfahren und testen.
    Ich mache immer noch zu viel mit If Then Anweisungen. Sieht meist nicht gut aus, richtig anfängermäßig.
    Die eigentliche Fingerübung ist das hier noch nicht, es sollte noch etwas mit Tasten sein.
    Aber dazu später.

    Quellcode

    1. $regfile = "m8adef.dat"
    2. $crystal = 8000000
    3. $baud = 19200
    4. Dim Count As Byte
    5. Dim Zaehler As Byte
    6. Restore Werte
    7. For Count = 1 To 3
    8. Read Zaehler : Print Count ; " " ; Zaehler
    9. waitms 500
    10. Next
    11. Werte:
    12. Data 66 , 33 , 100
    Alles anzeigen
  • jetzt fehlen aber noch die Angaben der stack-Größe in deinem Listing.
    Keine Angaben im listing veranlast den compiler voreingestellte Werte zu verwenden. Die können aber total schlecht sein. Drum ist es besser die Werte so

    $hwstack = 32 ' default use 32 for the hardware stack
    $swstack = 10 ' default use 10 for the SW stack
    $framesize = 40 ' default use 40 for the frame space

    (als Beispiel) ins listing mit zu übernehmen.
    Setz' die 3 Zeilen mal in dein Programm ein und probier noch mal...
    Raum für Notizen

    -----------------------------------------------------------------------------------------------------

    -----------------------------------------------------------------------------------------------------
  • stift7 schrieb:

    hier ist der Code der auf dem Mega8 funktioniert. Aus Bascom-Hilfe.
    und wenn der M8 mit 8MHz läuft und der Tiny mit 1MHz, dann kommt Zeichensalat beim Tiny.
    Wieviel Zeichen kommen denn im Terminal an? Wenn die Anzahl Zeichen etwa 5-8mal höher als erwartet ist, dann stimmt die Baudrate nicht.
    Dann müsstest du im Terminal eine Baudrate von 2400 einstellen.

    Das mit den Stackwerten hast du ja jetzt verstanden?
  • Guten Tag an alle,

    o.k., die 3 Zeilen mit den Stack's etc. werde ich nachtragen.
    Habe ich verstanden und zukünftig berücksichtigen.
    Ja, richtig, der tiny2313 läuft auf 1 MHz, der M8 auf 8 MHz und bei beiden ist die Baud-Rate = 19200.
    Ich korrigiere und teste, bis gleich.
  • Vielen Dank Stefanhamburg und Michael,
    euer Tipp war richtig, es lag an der falschen Taktfrequenz.
    Mit 8MHz und 19200 baud, läuft auch der tiny2313.
    Wenn ich wieder auf 1MHz umstelle, erscheint im Terminal Zeichensalat.
    Na, dann ist das Board und der tiny doch nicht defekt, toll. :)
    Was die Stacks betrifft, tschoeatsch, dann sind die Default-Werte die Bascom vorgibt
    eigentlich größer, als die von dir angegebenen. Bis auf Framesize.
    Es funktioniert nun auch mit den Default-Werten, ohne manuelle Eingabe in Code bzw. Listing.
    Bis hier, besten Dank.
    Nun zu der mir selbstgestellten Tasten-Aufgabe.
    Mit jeweils einem Tastendruck sollen nacheinander die Werte aus der Tabelle im Terminal dargestellt werden.
    Ich probier mal.
    Bis später ...
  • Die default-Werte von stack und frame müssen nicht schlecht sein, können aber schlecht/unpassend sein. Und, sie sind ja auch verstellbar. Wenn man nur das listing ohne diese Werte sieht, kann man nicht erkennen, ob stack und frame passt. Deshalb immer die Frage nach diesen Werten. Zu hohe Werte gibt es nicht, wenn dafür kein Platz mehr im ram ist, wird das angemeckert, zuwenig wird vom compiler nicht erkannt, das ist das Üble.
    Raum für Notizen

    -----------------------------------------------------------------------------------------------------

    -----------------------------------------------------------------------------------------------------
  • Hallo und guten Abend,
    wie vorab angekündigt, habe ich noch eine Taste in den Code eingefügt.
    Es funktioniert jetzt alles.
    Wenn ihr möchtet und von mir aus auch, kann dieser Beitrag hier geschlossen werden.
    (weiß nicht, ob ich das machen muss, oder wie das abläuft.)
    Besten Dank nochmal an alle Helfenden.
    Die Diskussionen sind immer hilfreich, spannend und interessant.
    Bis zur nächsten Anfrage.
    Gruß
    stift7