mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabellengröße


Autor: Ernie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich muß zur Ansteuerung eines intelligenten LED Displays einige Bytes
in einer Tabelle ablegen. Wenn ich aber in einer Tabelle mehr als 255
Bytes ablege, so zeigt der Zeiger nach dem 255 Byte auf irgendeine
andere Stelle.

Meine Frage ist nun, ob die Größe einer Tabelle beschränkt ist, oder ob
ich einen Fehler im Programmcode habe.

Zur kurzen Erläuterung : Ich setze den Zeiger an ein bestimmte Stelle
(Buffer) und dann werden 5 Bytes gelesen und ausgegeben.

Write:
    ldi  Reihe,$00

    ldi     ZL,LOW(ASCII_Tab1*2)
    ldi     ZH,HIGH(ASCII_Tab1*2)

    mov  Temp,Buffer
    add  ZL,Temp
    clr  Temp
    adc  ZH,Temp

Write_Loop:

    lpm
    mov  SPI_Byte,r0
    rcall  Putchar

    adiw    ZL,1
    inc  Reihe
    mov  Temp,Reihe
    cpi  Reihe,$05
    brne  Write_Loop
    ret

die Tabelle sieht ungefähr so aus :

.cseg

ASCII_Tab1:

  .db $00,$00,$00,$00,$00,$00  ;
; !
  .db $04,$24,$44,$60,$84,$00  ;
; "
  .db $0A,$2A,$40,$60,$80,$00  ;
; #
  .db $0A,$3F,$4A,$7F,$8A,$00  ;
; $
  .db $0F,$34,$4E,$65,$9E,$00  ;
; %
  .db $19,$3A,$44,$6B,$93,$00  ;
; &
  .db $08,$34,$4D,$72,$8D,$00  ;
; '
  .db $04,$24,$40,$60,$80,$00  ;

usw.

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nur eine 8 Bit-Offset (Buffer) nutzt, können auch nur 8 Bit
Start-Offset addiert werden.
oder du mußt Buffer mit der Anzahl pro Eintrag multiplizieren.

Autor: Ernie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, ich Depp hatte vorher den Buffer immer mit 6 multipliziert
und nicht bedacht, daß der ja überläuft :o)

Jetzt multipliziere ich den 16 Bit Zeiger und nun funzt es :o)

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.