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
irgendwo zwischen 'SchreibeBitMap:' und 'ret' mit anderen worten: gehts auch etwas genauer? :-P
Es geht darum das, das speichern im ram nicht richtig funktioniert. manchmal gehts manchmal nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.