In dem Datenblatt is so ein Chart.
http://www.robotikhardware.de/downlo...datenblatt.pdf
Is naturlich Arbeit, je nachdem, wie fix du bist.
Aber dann hast du es ein für allemal
Druckbare Version
In dem Datenblatt is so ein Chart.
http://www.robotikhardware.de/downlo...datenblatt.pdf
Is naturlich Arbeit, je nachdem, wie fix du bist.
Aber dann hast du es ein für allemal
Kann man da nicht auch als Alternative die Bits von zwei Bytes rotieren lassen? Das wäre mein erster Lösungsansatz.
Das eine nach links, das andere nach rechts und alles in eine Schleife eingebunden sähe vielleicht so aus:
.
.
.
.
For C = 0 to 7
A.7=B.7
Rotate A, 1, left
Rotate B, 1, right
Next
.
.
.
.
Ich hab schon ne Weile nichts mehr in Bascom gemacht also nagelt mich nicht auf den korrekten Befehlsaufbau fest und werft vorher einen Blick in die Hilfedatei! :)
...und wozu ist das "C" ?
Meine Idee wäre die (allerdings mit dem "Massaker"-Nachteil, den PickNick erwähnte):
Nicht schön, aber selten... =P~Code:
Dim Alt as byte 'Ausgangs-Byte
Dim Neu as byte 'Invertiertes Byte
Dim A as byte
Dim B as byte
.
.
.
For A = 0 to 7
B = 7 - A
Neu.A = Alt.B
Next A
.
.
.
Hallo
b löschen
carry löschen
for n=1 to 8
rlc a
rrc b
next
Mit freundlichen Grüßen
Benno
Hier ein Vorschlag, wie man die Aufgabenstellung Zeit- und Code-sparend in ASM lösen könnte mit einem Beispiel zum Testen der Funktion.
Code:Dim X1 as Byte, X2 as Byte ' Zum Testen
Declare Function ByteReverse (InByte as Byte) as Byte
' Test für alle Byte-Werte ( 0 - 255)
for x1 = 0 to 255
x2 = ByteReverse(x1)
print bin(x1); " " ; bin(x2)
next
end
Function ByteReverse (InByte as Byte) as Byte
$ASM
Loadadr InByte, Z ' SRAM-Adresse des Input-Bytes in Z-Pointer
ld r24, Z ' Input in CPU-Register r24 laden
ldi r23, 8 ' 8 Bit zum schieben
ByteReverse1:
lsl r24 ' Bit nach links ins Carry schieben
ror r25 ' Carry nach Rechts in Output schieben
dec r23
brne ByteReverse1 ' letztes Bit erreicht
loadadr ByteReverse, Z
st Z, r25 ' Byte in Rückgabevariable abspeichern
$End ASM
End Function
Das Byte kann mit Übergabe in die deklarierte Funktion ByteReverse (wie schon in einem vorigen Post vorgeschlagen) umgedrehrt werden
@Sauer:
Man braucht eine weitere Variable zum Abzählen der Schleifen - und das ist in meinem Fall C
Unter Do...Loop until wär's das selbe.
Hallo BoondockDuck,
bist du mit deiner Laufschrift weiter gekommen?
Ich möchte mir so was auch gerne anschauen. Könntest Du mir bitte den Code senden?
Gruß Richard