Dämlicher Assembler (AVR)

OP #605403
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.
#605429
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:
1
.equ    _A      = 0x10                          ;segment order
2
.equ    _B      = 0x08
3
.equ    _C      = 0x04
4
.equ    _D      = 0x02
5
.equ    _E      = 0x01
6
.equ    _F      = 0x40
7
.equ    _G      = 0x20
8
.equ    _DP     = 0x80                          ;decimal point
9

10
.equ    _0      = ~( _A+_B+_C+_D+_E+_F    )     ;number pattern, low active
11
.equ    _1      = ~(    _B+_C             )
12
.equ    _2      = ~( _A+_B+   _D+_E+   _G )
13
.equ    _3      = ~( _A+_B+_C+_D+      _G )
14
.equ    _4      = ~(    _B+_C+      _F+_G )
15
.equ    _5      = ~( _A+   _C+_D+   _F+_G )
16
.equ    _6      = ~( _A+   _C+_D+_E+_F+_G )
17
.equ    _7      = ~( _A+_B+_C             )
18
.equ    _8      = ~( _A+_B+_C+_D+_E+_F+_G )
19
.equ    _9      = ~( _A+_B+_C+_D   +_F+_G )
20
.equ    Blank   = ~( 0                    )
21
.equ    Minus   = ~(                   _G )
22

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


Peter

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.