Wo steckt der Fehler?

Gast #50825
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.