mikrocontroller.net

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


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Kakadu (Gast)
Datum:

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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kakadu schrieb:
> Bei einem Museumsprozessor ist das so ;-)

wie schieben denn nicht Museumsprozessoren ?
Besser gesagt Controller !

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

;-)

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wow der AVR schiebt ja auch :-)
Ist der auch aus dem Museum ?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Kakadu

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
  mov  c, p0.1
  anl  c, /p1.3
  mov  p2.7, c


Peter

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.