Forum: Mikrocontroller und Digitale Elektronik AT89C51: Wie schnell?


von bernd (Gast)


Lesenswert?

Hi,

kann mir jamand sagen, wieviele Befehle ein 40MHz AT89C51-Prozesser so
im Durchnitt schaft.

Danke

von Rahul (Gast)


Lesenswert?

teil dir 40MHz durch 12... dann hast du die MIPS

von OldBug (Gast)


Lesenswert?

Schade, daß es die nicht mit internem Oszillator gibt...

von Blackmike (Gast)


Lesenswert?

Kommt auch drauf an, welchen Typ Prozessor du hast. Es gibt die
Prozessoren auch mit X2 Core von Atmel, Phillips, Dallas etc ,- z.B.
die Rx2,- AC2 serie,-
die braucht nur 6 Takte anstatt 12 pro Zyclus.

Internen Oszillator haben die leider nicht,- pass aber auf, wenn du
einen Quarz dranhängst, das es ein Grundton Quarz ist. Bei reichelt
sind die Normalen Quarze ab 24 Mhz 3.Oberton Quarze und da schwingt der
interne Oszillator ohne externe Zusatzbeschaltung nur auf dem Grundton
(s. Atmel Application Node: third tone crystal). Da bin ich mal drauf
reingefallen. Da ist fertiger Quarzoszillator mit Anschluß an XTAL1
besser.

greetz,- Black

von Dirk (Gast)


Lesenswert?

"teil dir 40MHz durch 12... dann hast du die MIPS"

Nö, nur bei 1-Zyklus-Befehlen. Im Durchschnitt ist das deutlich
weniger.

von Rahul (Gast)


Lesenswert?

@dirk:
naja, das wäre zumindest die höchste Geschwindigkeit, die ein
"normaler" 8051 erreichen kann, wenn er nur mit 1-Zyklus-Befehlen
betreiben wird (z.B. NOPs...).
Beim AVR gibt man die auch so an...
Vielleicht hätte ich "bis zu" noch hinzufügen sollen...

von Bernd (Gast)


Lesenswert?

Hab ich das richtig verstanden?
Wenn ich einen High Speed ???51 mit 60MHz nehme, schaft der gerade mal
5MIPS?

von Tobias Schneider (Gast)


Lesenswert?

Mit normalem Core schon. wenn er aber bei der frequenz auch x2 macht hat
er 10 mips.
Falls du diese zahl jedoch mit den 16-24 mips der avr familie
vergleichen willst musst du bedenken, dass der 8051 ein cisc und der
avr ein risc prozessor ist. dadurch hat der 8051 bei selben mips einen
vorzug gegenueber dem avr, da seine instruktionen sehr viel maechtiger
sind und vom avr in mehrere kleiner geteilt werden muessen. Genaue
zahlen kann ich dir jedoch nicht geben.

Gruß Tobias

von Peter D. (peda)


Lesenswert?

@Bernd,

"Hab ich das richtig verstanden?
Wenn ich einen High Speed ???51 mit 60MHz nehme, schaft der gerade mal
5MIPS?"


Laste das erstmal aus, dann reden wir weiter.

Ich benutze oft einen Standardquarz 11,0592MHz, also lächerliche
0,9MIPS, habe aber noch nie Zeitprobleme gehabt, die sich nicht mit
etwas besserer Strukturierung lösen ließen.

Oder anders gesagt, bei grottenschlechter Programmplanung kriegst Du
auch einen C8051F120 (100MIPS) zum Qualmen.


Peter

von Michael (Gast)


Lesenswert?

"...da seine instruktionen sehr viel maechtiger sind und vom avr in
mehrere kleiner geteilt werden muessen."

Sehr interessant. Welche sind das denn ?

von Blackmike (Gast)


Lesenswert?

read modify write befehle auf ports und register zum bleistift....

laß hier aber nicht in das dogma enden, die 51er sind besser oder die
avr sind besser.... jede family hat ihre vorzüge,- gibt
programmalgorithmen, wo ein 51er einen avr stehen läßt,- umgekehrt auch
algorithmen, wo ein 51er  dann alt ausschaut.

Bei etwas größeren projekten greife ich eigentlich immer zu meinem
favoriten, 89c51Rx2, und selbst wenn ich dann mit dem RTX arbeite,-
ist der kleine immer noch satt schnell.
die entscheidung ist allerdings keine reine
geschwindigkeitsentscheidung,- sondern die unterstützung des
Multitaskting Echtzeit OS durch den Keil Compiler.

von Michael (Gast)


Lesenswert?

Hallo Schwarzer Bruder,

" ...laß hier aber nicht in das dogma enden,... "

Dann sieh Dir den AVR-Befehl SBI an und bring bitte ein Beispiel, was
zieht. Ein Bleistift schreibt nicht von alleine :-)

von Blackmike (Gast)


Lesenswert?

ähm, ich glaub, ich kenn die Befehlssätze auch...

SBI beim AVR setzt ein bit,- ok, das geht beim 51er mit set.

mit read modify write ist gemeint zum bleistift:
anl p1,[register],[konstante],[speicher]
direktes AND auf dem Portbyte mit argument entweder register, konstante
oder speicherinhalt und zurückschreiben an P1.

oder ANL P1.0,[Register][bitspeicher]
direktes AND des Portbits mit bitregister oder inhalt aus bitspeicher
und zurückschreiben in den Port

Das ganze funzt mit Ports und speicher.

von Peter D. (peda)


Lesenswert?

@Michael,

"...und bring bitte ein Beispiel, was zieht."

z.B.:

8051:

djnz 70h, label
....
label:

= 3 Byte

AVR:

lds r16, 0x70
dec r16
sts 0x70, r16
brne label
....
label:

= 12 Byte


Das Thema wurde hier schon oft besprochen, da findest Du noch mehr
Beispiele.

Aber so riesengroß sind die Unterschiede in der Summe nicht, AVR-Code
ist in realen Programmen nur etwa 20% größer als 8051-Code, egal ob in
C oder Assembler.

Der größte Nachteil der AVRs sind die fehlenden Interruptprioritäten.


Peter

von Blackmike (Gast)


Lesenswert?

@Peter

dein beispiel ist auch gut,- aber ich wollt hier net in Dogmen
verfallen. Beide Controller sind gut und haben ihre Vor und Nachteile.
Bei den 51er´n gehts dann mit der Performance in den Keller,- sobald
ich soviel Speicher habe, das ich im PDATA oder noch schlimmer in XDATA
Segment arbeiten muß.

Das Gewurschtel mit dem oder den (je nach Hersteller bis zu 4 Stück)
DPTR Register,- um auf XDATA zugreifen zu können,- das ist dann halt
Nachteil des 51er Cores...

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.