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
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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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...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
Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde
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
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
@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
Lesezeichen