Ja das ist schon richtig, aber nur während der Messung, das hat überhaupt keine Auswirkung auf das Hauptprogramm.d.h. es sieht so aus, als schaltetest Du mit dem Codestück, mit dem Du die LEDs steuern willst, auch die Motoren ein und aus.
Nochmal wegen dem sbi und cbi beim Messen:
Da ich ja jeden der 3 Sensoren einzeln ausmessen will, kann ich den Roboter nicht einfach auf die Linie Stellen und dann messen. Also habe ich mir folgendes überlegt:
zuerst messe ich alle Werte der Sensoren wenn sie auf Weiß stehen
dann jeden einzelnen auf Schwarz.
Da ich aber jetzt jeden einzelnen auf schwarz messen muss, und ich mir schwertuhe Zeiten zu merken, symbolisiere ich das einfach am PORTB (dort wo die Motoren sind (diese sind aber zudem Zeitpunkt von Stromkreis getrennt damit sie sich nicht drehen während der Messung))
also Schritte:
-Messe alle auf weiß das geht ja einfach, da ich ihn nur hinstelle und dann den Taster drücke
-Jetzt nach der Messung leuchtet Portb,1 auf, dh für mich und für das Programm heißt das, dass er nach den 3 Sekunden den linken Sensor ausmessen wird, also stelle ich ihn so auf die Linie, damit der linke Sensor auf der Linie steht
-Nach dieser Messung leuchten beide auf, dh Mittlerer Sensor ist dran, ich stelle ihn also so auf, damit der mittlere Sensor auf der Linie steht.
-Und zu allerletzt leuchtet der rechte auf, --> Rechter Sensor auf Linie, weil in 3 Sek der rechte gemessen wird
------------------------------------
Problem ist jetzt halt bei deinem Vorschlag, dass ich das sbrc streichen kann und sich wahrscheinlich der Wert im nächsten Befehl ändert^^Wenn PORTB aus Ausgang konfiguriert ist, haben die Anweisungen
Code:
ldi r28, 0b00000010 ;Motor = Rechts
out PORTB, r28
exakt dieselbe Wirkung wie
Code:
sbi PORTB,1
das ganze kannst du dir auch im Basic Programm anschauen, ist vielleicht übersichtlicher. Im Assembler ist es wirklich unübersichtlich, daher auch vielleicht das Missverständnis von dir
lg andy
Lesezeichen