- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 173

Thema: Portbelegung auf ATMega für LCD1602

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #31
    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
    Mein lieber Schwan!!
    Das soll einer behirnen!?
    Bei deinem "Mathe.asm" Beispiel steige ich komplett aus!!
    Tut mir leid. Das pack ich einfach nicht. Das ist mir viel zu verwirrend.
    Dafür gehts bei der Routine "Hardware Multiplikation von 16- mit 8-Bit-Zahl" aus dem Tutorial.
    Danke!
    Ausgangsbasis sind immer 2*16bit Zahlen die jeweils aus 2*8bit Registern zu 1*16bit zusammen gefasst sind. Die Ergebnissregister sind 4*8bit somit ist der Zahlenbereich 0-4294967296 Zahlen möglich womit deine 103545 locker reinpasst.
    Das Ergebnis steht auch relativ sichtbar
    Was ist dennn angeblich so verwirrend ?

    Nur weil das Carry also der Übertrag bei der Addition mit hinzukommt ? Wenn du selber schriftlich multiplizierst rechnest du doch genauso:

    .....1234 * 5
    .........20
    .......150
    ......1000
    ......5000
    .= ..6170

    Rein in binär kann man das auch rechnen nur das wird absolut zuviel.
    Das Problem bei dieser Routine ist das du die Restbildung zum Erweitern sich deutlich verkompliziert.
    Denn hier bist du schon in der Floatingpointoperation heißt mit Kommastellen rechnen...

    Zitat Zitat von HeSt Beitrag anzeigen
    Das stimmt so nicht!
    103545 ist eine "Zahl"! Die kann ich am Display nicht anzeigen.
    Einen 8-Bit Registerinhalt in Text umzuwandeln geht ja. Dazu hab ich eine Routine im Netz gefunden.
    Aber wie geht das mit 3 Registern zu je 8-Bit?
    Da kann ich nicht einfach jedes einzelne Register in Text umwandeln.
    Für eine Zahl aus 3 Registern in ASCII bin ich im Netz leider nicht fündig geworden.
    Ich kapier das alles leider (noch) nicht.
    Warum kannst du diese Zahl im Display nicht dastellen ? Du wandelst die 8bit in Text ? Eher nicht du meinst du wandelst es von 8Bit in DEZIMAL.
    Die Routine ist nichtsweiter als ein Vergleich z.B.:
    von 2300
    >=1000 ? ja 2300 minus 1000 = 1 Durchgang Rest 1300
    >=1000 ? ja 1300 minus 1000 = 1 Durchgang Rest 300
    Durchgänge incrementieren oder Subtrahieren Wert als 2 speichern = tausender Stelle
    >= 100 ? ja 300-100 = 1 Durchgang Rest 200
    >= 100 ? ja 200-100 = 1 Durchgnag Rest 100
    >= 100 ? ja 100-100 = 1 Durchgang Rest 0
    Speichern als hunderter Stelle 3
    >= 10 ? nein also 0 speichern als Zehner Stelle
    >= 1 ? nein also 0 speichern als einer Stelle

    Jetzt zu deiner Frage wie macht man das für x-8Bit-Register?
    1byte 8 bit = 255 = Zahlenbereich also 100 ist dein Grundwert mit dem man beginnt abzuziehen
    2byte 16 bit = 65535 = Zahlenbereich also 10000 ist dein Grundwert mit dem man beginnt abzuziehen
    3byte 24 bit = 16777215 = Zahlenbereich also 10Mio ist dein Grundwert mit dem man beginnnt abzuziehen
    usw

    Hinweis Wertebereich 8bit = 256 Zustände. Der Zahlenbereich ist immer Wertebereich minus 1 deshalb 255 Trotzdem bleiben es 256 Zahlen 0-255

    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

    Wie stark nutzt du den Simulator ? Also spielst du jede Änderung durch ?

    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...
    Zitat Zitat von Moppi Beitrag anzeigen
    (fang mal irgendwann ganz sachte mit C++ an)
    Klar 2 Jahre erstmal den Syntax lernen ohne das man irgendwas am Controller als Ergebnis sieht.... Auch die Wandlungen macht C+/C++/C# und alle anderen Hochsprachen ebenso nur mit anderen Ausdrücken...
    Geändert von avr_racer (13.01.2019 um 10:43 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
  •  

12V Akku bauen