- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 173

Thema: Portbelegung auf ATMega für LCD1602

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Zitat Zitat von avr_racer Beitrag anzeigen
    Was ist dennn angeblich so verwirrend ?
    Nur weil das Carry also der Übertrag bei der Addition mit hinzukommt ?
    Nein, das ist es nicht.
    Wenn man, so wie du, mit der Materie auf du + du ist, ist das leicht(er) zu verstehen.
    Das fehlt bei mir leider noch fast völlig. Ich hab solche Rechnereien bislang nicht benötigt und mich somit auch nicht damit befasst.
    Deshalb brauche ich jetzt Zeit zum behirnen. Bitte um Geduld.
    Zitat Zitat von avr_racer Beitrag anzeigen
    SO und auch dafür gibs eine Lösung im selbigen Link und nennt sich HEX_DEZ_Wandlung auch in der MATHE.ASM zu finden nur mit dem Unterschied das es eben für 4*8Bit ausgelegt ist der Zahlenbereich 0-4294967296.
    Wenn du nach der Wandlung dir die Werte ins SRAM speicherst, stehen diese gleich als DEZIMAL zu Verfügung und man kann sich das Ergebniss sofort anschauen. DEBUG-Option im Simulator
    Das, was davor noch an Erklärung steht, muss ich erst ganz genau durcharbeiten ...
    HEX_DEZ_Wandlung hilft mir nichts! Oder reden wir da aneinander vorbei?
    Wenn ich zB einen Wert von 174 in einem 8-Bit Register habe, ist für mich dieser Wert DEZIMAL. Das kann ich aber nicht am Display anzeigen.
    Ich muss die einzelnen Ziffern erst einzeln in ASCII/Text (1=$31,7=$37,4=$34) in einzelne Register umwandeln damit sie anzeigbar sind. Oder was meinst du mit dezimal anzeigen?
    Zitat Zitat von avr_racer Beitrag anzeigen
    Wie stark nutzt du den Simulator ? Also spielst du jede Änderung durch ?
    Das kommt auf den Code/die Änderung an. Wenn ich den Code "verstehe" und somit weiß wie er funktioniert, was er tut, meist nicht.
    Bei diesen Rechnereien JEDE!
    Zitat Zitat von avr_racer Beitrag anzeigen
    Nachtrag: Sich mit diesen Grundlagen zu beschäftigen ist im ersten Moment schwer nur ohne gehts einfach nicht. Rate mal warum viele soviele Probleme in Hochsprachen haben obwohl diese es eigentlich einfacher machen sollten...
    Deshalb ist mir, auch wenn es aufwändiger ist, Assembler lieber, weil ich weiß (oder hoffe zu wissen) was der Prozessor wie macht.
    Ich hab wahrscheinlich noch einen Knopf im Hirn, den es erst gilt zu lösen.
    Dann wirds mir leichter fallen diese Rechnereien zu verstehen und dann auch zu codieren. Ich lerne bei jedem Projekt wieder was dazu.
    Bei diesem ist es halt im Moment heftig, weil mir ein gewisses Grundverständnis (und damit meine ich nicht der Codierung) fehlt.
    Ich werd's schon noch hinkriegen ...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von HeSt Beitrag anzeigen
    HEX_DEZ_Wandlung hilft mir nichts! Oder reden wir da aneinander vorbei?
    Wenn ich zB einen Wert von 174 in einem 8-Bit Register habe, ist für mich dieser Wert DEZIMAL. Das kann ich aber nicht am Display anzeigen.
    Ich muss die einzelnen Ziffern erst einzeln in ASCII/Text (1=$31,7=$37,4=$34) in einzelne Register umwandeln damit sie anzeigbar sind. Oder was meinst du mit dezimal anzeigen?
    Dezimal sind Werte auf Basis von 10.
    Hexadezimal Werte auf Basis von 16.
    Binär oder Dual Werte auf Basis von 2.

    In einem Bit kann nur Dual gespeichert werden.
    In einem Byte, das aus 8 Bit besteht, wird Hexadezimal gespeichert. Hier sind Werte von 0 bis einschließlich 15 möglich.

    Umgewandelt werden muss deshalb von Hexadezimal nach Dezimal , zur Ausgabe in einzelne Stellen (der darzustellenden Dezimalzahl) zerlegt und als ASCII-Wert abgebildet.

    dezimal (Basis 10): 123
    hexadezimal (Basis 16): 7B
    binär (Basis 2) 8 Bit: 01111011


    MfG

    - - - Aktualisiert - - -

    Zitat Zitat von avr_racer Beitrag anzeigen
    Klar 2 Jahre erstmal den Syntax lernen ohne das man irgendwas am Controller als Ergebnis sieht....
    Na, na! Wenn man das erlernt, sieht man schon was...

    In der Tat sind die ersten Schritte schwer. Überall. Auch bei Assembler bzw. Maschinensprache braucht man Geduld. Nicht so schnell, immer eins nach dem andern. Ich glaube HeSt wird gerade etwas überrumpelt.

    MfG

  3. #3
    HaWe
    Gast
    genau moppi, ich dachte eigentlich, das wäre einem asm-Programmierer bekannt...
    Wenn ich zB einen Wert von 174 in einem 8-Bit Register habe, ist für mich dieser Wert DEZIMAL.
    DAS stimmt natürlich nicht.
    174 ist (ohne Vorzeichen) gespeichert als 10101110 bzw in 1 Byte-Register als 0xAE (editiert)
    nun muss man diese Zahl in eine andere Schreibweise (mit dezimalen Ziffern) umwandeln (der Zahlenwert bleibt dabei ntl identisch), erst dann erhält man die drei Ziffern 1, 7, 4
    und dann müssen die einzelnen Ziffernstellen 0-9 in Zeichen '0' bis '9' umgewandelt werden, erst dann lassen sie sich als Zeichen (nicht als Zahl) aufs Display bringen.
    Geändert von HaWe (13.01.2019 um 14:07 Uhr)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Zitat Zitat von HaWe Beitrag anzeigen
    genau moppi, ich dachte eigentlich, das wäre einem asm-Programmierer bekannt...

    DAS stimmt natürlich nicht.
    174 ist gespeichert als 10101110 bzw in 2 Byte-Registern als 0xA 0xE
    nun muss man diese Zahl in eine andere Schreibweise (mit dezimalen Ziffern) umwandeln (der Zahlenwert bleibt dabei ntl identisch), erst dann erhält man die drei Ziffern 1, 7, 4
    und dann müssen die einzelnen Ziffernstellen 0-9 in Zeichen '0' bis '9' umgewandelt werden, erst dann lassen sie sich als Zeichen (nicht als Zahl) aufs Display bringen.
    FALSCH
    174 ist 1 BYTE die jeweils aus dem A als Highbyte und dem E als Lowbyte zusammengesetzt sind als 0xAE = 1Byte

  5. #5
    HaWe
    Gast
    ah, stimmt, klar, Highbyte und Lowbyte passen ja bei unsigned char (0...255) zusammen rein.
    Nur wenn man signed char (-128...+127) hat, braucht man bei 174 zwei Byte.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von avr_racer Beitrag anzeigen
    FALSCH
    174 ist 1 BYTE die jeweils aus dem A als Highbyte und dem E als Lowbyte zusammengesetzt sind als 0xAE = 1Byte
    Richtig.

    MfG

  7. #7
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Richtig.

    MfG
    war das jetzt noch nötig?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ja.

    HeSt versucht was zu verstehen. Deshalb noch mal die Betonung, um Unsicherheit zu beseitigen. Und das Pallaver am Rande hilft ihm auch nicht weiter.

    MfG

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Zitat Zitat von HeSt Beitrag anzeigen
    Nein, das ist es nicht.
    Wenn man, so wie du, mit der Materie auf du + du ist, ist das leicht(er) zu verstehen.
    Das fehlt bei mir leider noch fast völlig. Ich hab solche Rechnereien bislang nicht benötigt und mich somit auch nicht damit befasst.
    Deshalb brauche ich jetzt Zeit zum behirnen. Bitte um Geduld.
    Na lass mal genau wie du hab ich auch damit angefangen ohne solche Umherrechnen nur irgendwann gehts halt nicht mehr weiter. Also keine Angst dieser Lernzustand ist ganz normal

    Zitat Zitat von HeSt Beitrag anzeigen
    Das, was davor noch an Erklärung steht, muss ich erst ganz genau durcharbeiten ...
    HEX_DEZ_Wandlung hilft mir nichts! Oder reden wir da aneinander vorbei?
    Wenn ich zB einen Wert von 174 in einem 8-Bit Register habe, ist für mich dieser Wert DEZIMAL. Das kann ich aber nicht am Display anzeigen.
    Ich muss die einzelnen Ziffern erst einzeln in ASCII/Text (1=$31,7=$37,4=$34) in einzelne Register umwandeln damit sie anzeigbar sind. Oder was meinst du mit dezimal anzeigen?
    Das sind nur die Namen der Register und fügst diese in deiner Hauptdatei zum Anfang ein oder "schaltest" es in der Mathe-Datei einfach frei.
    Also HEX_Dez_Wandlung brauchst du trotzdem. denn wie willst du das A als DEZ darstellen bzw es sind ja 2 ASCII-Zeichen §31 und $30 nur das wären doch schon 2byte für zwei einezelne Ziffern die als Zehn interpretiert werden.
    Einfacher ist es doch 1byte mit HEX 10 zu beschreiben und in der Ausgabe zum LCD
    1. Kopie von $10 anlegen
    2. swapst du das Highbyte auf lowbyte und addierst $30 dazu
    3. $31 als Datensatz zum LCD schicken, 1 wird angezeigt
    4. Kopie Highbyte ausmaskieren und wieder mit $30 addieren
    5. $30 als Datensatz zum LCD schicken, 0 wird angezeigt

    Hinweis: Die Mathe.asm bringst das Ergebnis steht in den Registern richtig drin, je nach Ansicht in Dezimal oder HEX. Ich entnnehme deiner Aussage das du es auf Dezimal eingestellt hast im Simulator.
    Es gibt jetzt verschiedene Ansätze wie du diese Ergebnis jetzt wann wandelst.
    1. Du nimmst die Register wie sie sind und wandlest erst bei der Ausgabe in ASCII-Zahlen was aber die Ausgabe komplizierter macht.
    oder
    2. Ergebniss berechnen lassen dann von HEX in Dezimal wandeln und im RAM ablegen ACHTUNG je nach ANSICHT im Simulator: HEX-Ansicht dann sind es PSEUDO-HEXEN da du es schon in DEZIMAL betrachtest oder in Dezimal dann sind die Werte als DEZ interpretiert falsch, Ausgabe der DEZ-Zahlen da in der mit der Addition des Wertes von $30

    Noch mal einfach.
    Du brauchst eine reine:
    TEXTAUSGABE
    ZAHLENAUSGABE

    Hab mal zwei Bilder angehängt. $1312 * $0100 = $131200 da die ALU nur in Binär/(HEX) rechnen kann funktioniert die Registerübergreifende Darstellung in DEZIMAL nicht da die Zahlen von UNS falsch interpretiert werden
    Damit du es richtig interpretierst müsstest du
    19*256 + 18 = 4882 und 1*256 +0 = 4882 * 256 = 1249792
    Das Ergbeniss richtig zu interpretiern
    19*65536 + 18*256 + 0*256 = 1249792

    Klicke auf die Grafik für eine größere Ansicht

Name:	Ansicht in HEX für Register u Ram_RAM mit PSEUDODEZ.jpg
Hits:	5
Größe:	83,2 KB
ID:	33932
    Zitat Zitat von HeSt Beitrag anzeigen
    Das kommt auf den Code/die Änderung an. Wenn ich den Code "verstehe" und somit weiß wie er funktioniert, was er tut, meist nicht.
    Bei diesen Rechnereien JEDE!

    Deshalb ist mir, auch wenn es aufwändiger ist, Assembler lieber, weil ich weiß (oder hoffe zu wissen) was der Prozessor wie macht.
    Ich hab wahrscheinlich noch einen Knopf im Hirn, den es erst gilt zu lösen.
    Dann wirds mir leichter fallen diese Rechnereien zu verstehen und dann auch zu codieren. Ich lerne bei jedem Projekt wieder was dazu.
    Bei diesem ist es halt im Moment heftig, weil mir ein gewisses Grundverständnis (und damit meine ich nicht der Codierung) fehlt.
    Ich werd's schon noch hinkriegen ...
    Wie gesagt das ist ein Frage deiner Darstellungsform im Simulator am besten auf HEX lassen wenn es Rgeisterübergreifend arbeitet.
    Geändert von avr_racer (13.01.2019 um 13:45 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 11:18
  2. CCPRO M128: Portbelegung
    Von Dirk im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 22.05.2009, 22:26
  3. Portbelegung bei diesem Display [erledigt]
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.11.2006, 18:12
  4. Portbelegung ATmega32
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 15.11.2006, 19:59
  5. Antworten: 4
    Letzter Beitrag: 12.11.2006, 16:40

Berechtigungen

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

Solar Speicher und Akkus Tests