Bit shift - bei 10bit?

Gast #50928
Hallo, um mir die Wartezeit auf meinen AVR zu verkürzen programmiere ich
ein wenig und simulier es dann. Jetzt möchte ich mit zwei Tastern
(PORTD.0 und PORTD.1) eine von 10 LEDs immer hin- und her"bewegen".
mit 8 stück wäre es kein problem, das hab ich mit simplen lsl und lsr
befehlen hinbekommen. aber wie bekomm ich es mit 10bit hin?
Angehängte Dateien:
Gast
Hi,
ich hab zwar keine lösung in asm parat, aber mit externen dezimal
up/down counter wärs kein Problem, oder du könntest die anschlüsse
extern multiplexen(z.B. mit nem 16-Bit multiplexer), dann bräuchtest du
nur noch die 4-bits anzulegen.


Solch ein Up/down counter wäre z.B. cmos ic 4510

..Und ein 10-Bit Multiplexer(4-eingänge, 10 ausgänge, also genau
richtig)z.B.  cmos ic 4028




MFG Nik
Admin Persönliche Seite
Erst mal musst du die Bits auf zwei Register aufteilen:

High-Byte:     Low-Byte:
XXXXXX98       76543210

(die Zahlen entsprechen den durchnummerierten LEDs)

Um dann über die Registergrenze hinweg zu schieben, gibt es die Befehle
ror und rol. Beispiel:

clc               ; Carry-Flag auf 0 setzen
ror highbyte      ; links wird das Carry (0) reingeschoben,
                  ; das rausgefallene Bit wird im Carry gespeichert
ror lowbyte       ; das Carry wird links reingeschoben, das
                  ; rausgefallene Bit landet im Carry

Das Ganze ist natürlich beliebig weit fortsetzbar.

Schau dir mal das PDF "AVR Instruction Set" bei Atmel an, da ist das
"Rotieren" auch anhand einer Zeichnung erklärt.
Gast
Tja, falls ich mal sowas bauen will, werd ich sicher nen 10bit
multiplexer benutzen, aber im moment geht es mir eher darum, assembler
basics zu lernen. In C würd ichs wohl auch hinbekommen, nur darum gehts
es nicht... :)
Gast
Wenn Du es in C kannst:

Dann schreibe es in C und schau Dir an, welchen ASM-Code der Compiler
daraus macht. Dabei kann man oft viel lernen.

Stefan

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.