Forum: Mikrocontroller und Digitale Elektronik Anfängerproblem


von Stefan K. (roadrunner1980)


Lesenswert?

Hallo leute,

versuche mir gerade assembler mit keil in der 8051 familie bei zu
bringen.

Ein Lauflicht zum anfangen:

mov a, #01
loop: mov p1,a
rl a
jmp loop
end

Nun soll das Programm erweitert werden das man 16 lämpchen laufen läst,
also muss irgendwie p2 untergebracht werden. hab es schon mit jc also
über das carry versucht doch da ist p2 dem p1 immer um eines hinten
nach.

Hat wer einen tipp für mich

danke steve

von Hegy (Gast)


Lesenswert?

> hab es schon mit jc also
über das carry versucht doch da ist p2 dem p1 immer um eines hinten
nach.

Was? Verstehe ich nicht, wie, um eins hinten nach.

Also mit dem Carry ist das schon ok, nur gabs da nicht nen extra befehl
zu, der hiess rlc (rotiere nach links ueber Carry)?

Wenn dann p1 den Wert 8 hat und dann

rlc a
mov p1,a

ist p1 = 0 und CY = 1

Wenn CY = 1, dann

ldi a,#1
mov p2,a
(ich glaub so war das)
und dann rotieren ueber carry bis wieder CY=1 wird, und dann wieder bei
P1 weiterrumrotieren. Immer im Wechsel.

von Dietmar (Gast)


Lesenswert?

@stefan:

Welche IO-Ports verwendest du?

Welchen Baustein?

Interner oder externer Programmspeicher? Bei externem Programmspeicher
sind P0 und P2 belegt und nicht frei verwendbar.

Wo sind denn die 16 Lämpchen angeschlossen?

Normalerweise kommt man mit den Rotationsbefehlen, auch über mehrere
Bytes hinweg, aus. Das benötigt nur eine kleine etwas ausgeklügelte
Software. Am besten speichert man dazu die Zustände der Lämpchen in 2
Bytes z.B. im internen RAM und gibt sie aus.

Gruß

Dietmar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.