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)
Lesezeichen