Hallo Leute


Ich bin hier dabei ein Lauflicht gerade zu Programmieren und ich habe
erstmal dazu diverse Fragen.

1.Kann das vom Code so funktionieren?

2.Wie realiesiert man Warteschleifen?
Ich hab dazu gegoogelt bis zum geht nicht mehr
und wenn ich mir die Codebeispiele durchlese
scheine ich es zu verstehen aber irgendwie bin ich nicht
fähig diese zu verändern bzw. habe ich den Eindruck das ich
doch nicht alles verstanden habe.
Zum Beispiel:
Code:
    LDI ZH,HIGH(65535)
    LDI ZL,LOW(65535)
Zaehl:
    SBIW ZL,1
    BRNE Zaehl
ZH,ZHL sind 2 Register z.B. R18/R19 , welche die Zahl 65535 ( 256*256 )
bilden.
Die Erklärung zu SBIC
"This instruction tests a single bit in an I/O register and skips the next instruction if the bit is cleared"
Heißt doch so viel das wenn das Register 'leer' ist das der nächste Befehl übersprungen wird.

BRNE versteh ich nicht ganz.
Wenn ich das nun in meinen Programmablauf einbinden möchte muss
ich das ganze nur noch Warten nennen und es noch mit ret erweitern?

Wer wäre so nett und könnte mir den Rest erklären? ....

Und alle guten Dinge sind ja Drei.
3.Wie kann man einfach das Lauflicht erweitern?
Zum Beispiel das es sich auf Tastendruck in die andere Richtung bewegt
oder oder alles Inventiert ist?
Wobei das mit den Inventieren ja noch geht da man ja ein
neues Register brauch den Inhalt darein kopiert und den Inhalt
inventiert.Aber wie sieht es mit den rest aus?


Hier der Code:
Das rcall Warten ist noch leer da ich noch nicht richtig verstanden
habe wie Warteschleifen funktionieren.
Ich wollte das aber schonmal stehen haben damit ich *wenn es richtig ist*
auch das rcall an der richtigen Stelle sitzt.


Liebe Grüße
Namenlos

Code:
.include	"m8def.inc"

.DEF	Lauf = r16

ldi	Lauf,0b11111111
out	DDRB,Lauf			
;Alle Pins am Port B durch Ausgabe 0b11111111 ins
;Richtungsregister DDRB als Ausgang konfigurieren


Schleife:

	ldi	Lauf,0b00000000		
;Alle Bits Low
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00000001		
;Erster Port High
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00000010		
;Zweiter Port High
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00000100		
;Dritter Port High
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00001000		
;Vierter Port High
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00010000		
;Fünfter Port High
	out	PortB,Lauf			
;Ausgabe in PortB


	rcall	Warten


	ldi	Lauf,0b00100000		
;Sechster Port High
	out	PortB,Lauf		
;Ausgabe in PortB


	rjmp	Schleife


Warten:
Code-Tags eingefügt (PicNick)