www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dämlicher Assembler (AVR)


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Habe grade folgendes Problem. Um 7-Segmentanzeigen ansteuern zu können 
habe ich mir im Flash eine Tabelle angelegt:

digits:
.db    0b11101110    ; 0
.db    0b01100000    ; 1
.db    0b11001101    ; 2
.db    0b11101001    ; 3
.db    0b01100011    ; 4
.db    0b10101011    ; 5
.db    0b10101111    ; 6
.db    0b11100000    ; 7
.db    0b11101111    ; 8
.db    0b11101011    ; 9

Hier meldet mir der Assembler aber für jede Zeile:
warning: .cseg .db misalignment - padding zero byte

D.h. er hängt an jedes Byte noch eine 0 dran da der Flash ja 
Wortorganisiert ist. Ja toll, ich möchte aber einfach dass alle Bytes 
einfach hintereinander stehen, ohne 0en dazwischen. Wenn ich folgende 
Schreibweise verwende funktioniert es.

digits:
.db    0b11101110, 0b01100000
.db    0b11001101, 0b11101001
.db    0b01100011, 0b10101011
.db    0b10101111, 0b11100000
.db    0b11101111, 0b11101011

Es funktioniert so zwar aber sieht nicht hübsch aus. Muss ich irgendwo 
noch was einstellen?

mfg Paul H.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was kann der Assembler für die Flash Organisation im AVR?

entweder du machst die tabellen einträge gradzahlig oder du lebst mit 
der fehlermeldung.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn du es 'hübsch' haben willst, musst du halt mit dem doppelten 
Tabellenoffset rechnen.

MfG Spess

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann es auch richtig hübsch machen, damit es egal ist, wo welches 
Segment angeschlossen ist.

Ich ordne die Pins immer für ein optimales Layout zu und dann trage ich 
die Zuordnung im Programm ein:
.equ    _A      = 0x10                          ;segment order
.equ    _B      = 0x08
.equ    _C      = 0x04
.equ    _D      = 0x02
.equ    _E      = 0x01
.equ    _F      = 0x40
.equ    _G      = 0x20
.equ    _DP     = 0x80                          ;decimal point

.equ    _0      = ~( _A+_B+_C+_D+_E+_F    )     ;number pattern, low active
.equ    _1      = ~(    _B+_C             )
.equ    _2      = ~( _A+_B+   _D+_E+   _G )
.equ    _3      = ~( _A+_B+_C+_D+      _G )
.equ    _4      = ~(    _B+_C+      _F+_G )
.equ    _5      = ~( _A+   _C+_D+   _F+_G )
.equ    _6      = ~( _A+   _C+_D+_E+_F+_G )
.equ    _7      = ~( _A+_B+_C             )
.equ    _8      = ~( _A+_B+_C+_D+_E+_F+_G )
.equ    _9      = ~( _A+_B+_C+_D   +_F+_G )
.equ    Blank   = ~( 0                    )
.equ    Minus   = ~(                   _G )

number_code:
        .db     _0, _1, _2, _3, _4, _5, _6, _7, _8, _9


Peter

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok hab gerade im tutorial den entsprechenden code-teil entdeckt der die 
wortweise adressierung berücksichtigt. danke.

mfg paul h.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.