Hallo hab mal ein kleines Programm geschrieben. Soll ein Luaflicht werden. Ich weiß, daß das auch einfacher geht wie jedes Bit einzeln zu setzten. Darum geht es mir bis jetzt aber auch noch nicht. Ich hab das Problem, daß wenn ich die Schleife die jetzt im unterprogramm warten steht zwischen jede en einzelnen Block setzt Funktionierts. Also hab ich rigendwie ein problem mit dem Aufruf des Unterprogramms. Wollte das ganze (Zeitschleife) eh mit einem Timer realisieren. Aber das habe ich bis jetzt noch gar nicht verstanden. Setzt einen 12 Mhz Quarz ein. Dadurch brauche ich eine lange Schleife, um das Lauflicht überhaupt sehen zu können. Könnt ihr mir da vielleicht weiter helfen?

Vielen Dank schon mal

.include "m8def.inc"


ldi r16, 0xFF
out DDRD, r16
rcall warten
ldi r16, 0b11111111
out PORTD, r16
rcall warten
ldi r16, 0b00000010
out PORTD, r16
rcall warten
ldi r16, 0b00000100
out PORTD, r16
rcall warten
ldi r16, 0b00001000
out PORTD, r16
rcall warten
ldi r16, 0b00010000
out PORTD, r16
rcall warten
ldi r16, 0b00100000
out PORTD, r16
rcall warten
ldi r16, 0b01000000
out PORTD, r16
rcall warten
ldi r16, 0b10000000
out PORTD, r16
rcall warten
ldi r16, 0b00000000
out PORTD, r16

warten:
ldi r16, 1255
ldi r17, 255
loop1:
dec r17
brne loop1
dec r16
brne loop1
ret

Ach ja, was ist der Unterschied zwischen rcall und call? Könnte ich das Unterprogramm auch mir call aufrufen?