Forum: Mikrocontroller und Digitale Elektronik [F] 8051-Controller 32 Bit schieben


von Martin (Gast)


Lesenswert?

Gibt es eine schnellere Möglichkeit bei einem 8051-Controller insgesamt 
32 Bits zu schieben? Entweder wird eine 1 (SETB C) geschoben, oder eine 
0 (CLR C).

    SETB C            ; (1)
    MOV  A, Result    ; (1)
    RLC  A            ; (1)
    MOV  Result, A    ; (1)

    MOV  A, Result+1  ; (1)
    RLC  A            ; (1)
    MOV  Result+1, A  ; (1)

    MOV  A, Result+2  ; (1)
    RLC  A            ; (1)
    MOV  Result+2, A  ; (1)

    MOV  A, Result+3  ; (1)
    RLC  A            ; (1)
    MOV  Result+3, A  ; (1)

von Kakadu (Gast)


Lesenswert?

Wieso? Da sieht man doch genau, was passiert.
Bei einem Museumsprozessor ist das so ;-)

von Stephan (Gast)


Lesenswert?

Kakadu schrieb:
> Bei einem Museumsprozessor ist das so ;-)

wie schieben denn nicht Museumsprozessoren ?
Besser gesagt Controller !

von Kakadu (Gast)


Lesenswert?

#define result0 r0
#define result1 r1
#define result2 r2
#define result3 r3

sec;          (1)
rol result0;  (1)
rol result1;  (1)
rol result2;  (1)
rol result3;  (1)

;-)

von Stephan (Gast)


Lesenswert?

wow der AVR schiebt ja auch :-)
Ist der auch aus dem Museum ?

von Martin (Gast)


Lesenswert?

@ Kakadu

Du kennst weder die Befehle der 8051er-Controller, noch hast du das 
Problem verstanden. Was soll dein "Code"?

von Peter D. (peda)


Lesenswert?

Es gibt keinen optimalen Befehlssatz. Jeder MC hat Stärken und 
Schwächen.

Versuch mal auf nem AVR ne logisch Verknüfpung zu machen:
OUT0 = IN0 AND NOT(IN1)
in 8051 Assembler ganz einfach:
1
  mov  c, p0.1
2
  anl  c, /p1.3
3
  mov  p2.7, c


Peter

von Kakadu (Gast)


Lesenswert?

>Ist der auch aus dem Museum ?

Noch nicht, es wird aber schon Platz gemacht.
Ich hätte ja auch schreiben können:

ROXL.L result;

Aber ich weiß nicht mehr, wie man das X auf 1 bringt ;-)

>Du kennst weder die Befehle der 8051er-Controller, noch hast du das
>Problem verstanden.

Das kann ich so nicht bestätigen. Bei einer Akku-Maschine muß halt alles 
durch den Akku gehen. Sei froh, dass Du Dein result nicht über @DPTR 
ansprechen mußt.

von Pieter (Gast)


Lesenswert?

Hi Martin,

hole Dir mal das DB vom C8051F365, da gibt es was...

MAC0 also contains a 1-bit arithmetic shifter that will left or 
right-shift the contents of the 40-bit accumulator
in a single SYSCLK cycle. Figure 11.1 shows a block diagram of the MAC0 
unit and its associated
Special Function Registers.

Da der auch mit 98MHz (1Takt Core) arbeitet ist auch das manuelle 
schieben schnell erledigt.

Der MC kostet so um 6€.

Mit Gruß
Pieter

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.