mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wo steckt der Fehler?


Autor: Feldmaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SchreibeBitMap:

push XH
push XL
push YH
push YL
push ZH
push ZL
push r16
push r17
push r18
push r19
push r20
push r21
push r22
push r23

.def Hoehe = r24
.def Laenge = r25
.def SpeicherWert = r18
.def Anzahl = r19
.def Xi = r20
.def AktWert = r21
.def AdressZaehler = r22
.def Counter = r23


lds ZH, BitmH
lds ZL, BitmL

;Laenge einlesen
lpm
mov Laenge, r0
adiw ZL,1
;Höhe einlesen
lpm
mov Hoehe, r0


ldi XL,0x85  ;StartAdresse vom Ram für BitmapBuffer
ldi XH,0x01


NextByte:
    ldi Counter,0

    adiw ZL,1
    lpm
    mov SpeicherWert, r0
    sbrc SpeicherWert,7
    rjmp Bit7High
    mov Anzahl,SpeicherWert
    ldi SpeicherWert,0
    rjmp Bit7Ende
    Bit7High:
    subi SpeicherWert,128
    mov Anzahl,SpeicherWert
    ldi SpeicherWert,128
Bit7Ende:
StoreLoop:
Schieben:
    cp Counter,Xi
    breq SchiebenE
    inc Counter
    lsr SpeicherWert
    rjmp Schieben
schiebenE:

    ld AktWert,X
    or AktWert,SpeicherWert
    st X,AktWert
    adiw XL,1
    dec Anzahl
    inc AdressZaehler
    cp AdressZaehler,Hoehe
    breq NachLinks
    rjmp NachLinksE
nachLinks:
    cpi Xi,7
    breq StoreLoopE
    inc Xi
    ldi XL,0x85
    ldi XH,0x01
    ldi AdressZaehler,0
NachLinksE:
cpi Anzahl,0
breq NextByte
rjmp StoreLoop
StoreLoopE:
ldi Xi,0
ldi XL,0x85
ldi AdressZaehler,0

;rjmp NextByte

ldi r16,0x00
ldi r17,0x00
rcall setCursorPos
ldi YL,0xDC
ldi YH,0x05

ldi XL,0x85
ldi XH,0x01
ldi AdressZaehler,0
ldi r18,48
SchreibLoop:
      ld r16,X
      add r16,r18
      rcall setchar
      adiw XL,1


      inc AdressZaehler
      cp Adresszaehler,Hoehe
      brne Schreibloop





pop r23
pop r22
pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
pop ZL
pop ZH
pop YL
pop YH
pop XL
pop XH
ret

Autor: Ichbinsnur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
irgendwo zwischen 'SchreibeBitMap:' und 'ret'

mit anderen worten: gehts auch etwas genauer?   :-P

Autor: Feldmaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht darum das, das speichern im ram nicht richtig funktioniert.
manchmal gehts manchmal nicht.

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.