Forum: Mikrocontroller und Digitale Elektronik Lauflicht mit Assembler


von hero (Gast)


Lesenswert?

Hallo ich möchte ein Lauflicht in Assembler Programieren, für den 
ATMega8.
Ich verstehe nicht wieso mein Programm nicht funktioniert.Wohlbemerkt 
bin ich noch anfänger.^^
ich hoffe mir kann jemand helfen.
Die LEDs befinden sich an PortB.
Bitmuster:
0000
0*00*0              Stern entspricht einer leuchtenden LED
00**00
0****0
******
0****0
00**00
000000






;**************************************************************

.include"m8def.inc"
.org 0x0000

LDI R22,0x04              ;)
OUT SPH,R22        ;)Stack festlegen
LDI R22,0x00              ;)
OUT SPH,R22        ;)

NEU:
RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00100001    ;Lade Bitmuster in register
OUT PORTB,R16                   ;Setze Ausgänge Nach Bitmuster in R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00010010
OUT PORTB,R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00001100
OUT PORTB,R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00011110
OUT PORTB,R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00111111
OUT PORTB,R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00011110
OUT PORTB,R16

RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00001100
OUT PORTB,R16


RCall WGLOOP4      ;Sprungziel mit Stack

LDI R16,0B00000000
OUT PORTB,R16

RJMP NEU

WGLOOP4:


                 ldi  R22, 0x12    ;)
      WGLOOP0:  ldi  R18, 0xA1    ;)
      WGLOOP1:  ldi  R19, 0xD3    ;)
      WGLOOP2:  dec  R19        ;)
                brne WGLOOP2      ;)
                dec  R18        ;)
                brne WGLOOP1      ;)
                dec  R22        ;)
                brne WGLOOP0      ;) ;Zeitkonstante 1 Sekunde
      ; ----------------------------- ;)
      ; delaying 3 cycles:      ;)
                ldi  R22, 0x01    ;)
      WGLOOP3:  dec  R22        ;)
                brne WGLOOP3      ;)
      ; ----------------------------- ;)
      ; delaying 1 cycle:        ;)
                nop          ;)
      ; =============================
RET

von Gastofatz (Gast)


Lesenswert?

>LDI R22,0x04              ;)
>OUT SPH,R22        ;)Stack festlegen
>LDI R22,0x00              ;)
>OUT SPH,R22        ;)

Da gehts schon los: Zweimal SPH?

Den Rest hab ich mir nicht angeguckt.

von Michael (Gast)


Lesenswert?

>LDI R22,0x04              ;)
>OUT SPH,R22        ;)Stack festlegen
>LDI R22,0x00              ;)
>OUT SPH,R22        ;)

Du lädst 2x SPH, einer davon muss SPL sein. Und nehm RAMEND

von Mike D. (hero2992)


Lesenswert?

Hallo danke das wars schon... war ein dummer fehler...

Also vielmals danke.. ist mir ne halbe stunde lang nicht aufgefallen... 
und ihr findet es in 2 Minuten... hehe

von Hc Z. (mizch)


Lesenswert?

Das war's schon.  Wirklich?  Wo wird Port B auf Output gestellt?  Bisher 
werden nur die Pullups aktiviert.

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
Noch kein Account? Hier anmelden.