Hi, was sind eigentlich die Unterschiede zwischen AVR- und 89C52- Kontrollern? Ich kenne bissher nur AVR. Ein 89C52 ist aber mit bis zu 33 MHz und viel mehr Anschlüssen (als mein 4433) dazu noch billiger. Woran liegt das? jo Axel
33MHz? Laut Datenblatt geht der bis 24MHz. Aber egal, selbst wenn es eine 33er Version gibt gibt es schon ein paar Unterschiede. Laß mich den 89C52 mal mit einem AT90S8515 vergleichen, das dürfte eher hinkommen als der 4433. Der 8515 erreicht bei 8MHz auch 8 MIPS, da er bei jedem Takt einen Befehl ausführen kann (bis auf ein paar Ausnahmen, die 2-4 brauchen). Der 89C52 erreicht bei 24 MHz bestenfalls 6 MIPS, da ein Befehl mindestens 4 Takte für die Ausführung braucht. Aber bei Taktfrequenzen, die jenseits von 20MHz sind, wird es für den Hobbybastler immer schwieriger, die zu beherrschen. Der 89C52 braucht im Idel Mode mehr Strom (6,5mA) als der AVR im Betrieb (3mA). Bei Vollast genehmigt sich der 89C52 sogar 25mA. Der Prozessorkern des 89C52 ist schon über 20 Jahre alt, er wurde lediglich dahingehend verbessert, das die Befehle schneller ausgeführt werden. Und noch ein Vergleich der wichtigsten Funktionen: 8515: 8k Flash 512 Byte RAM 512 Byte EEPROM 2 Timer UART Watchdog Analog Comparator SPI Interface 89C52: 8k Flash 256 Byte RAM 3 Timer UART Wenn man sich jetzt noch anschaut, das der 89C52 einer der größeren dieser Familie ist, bei den AVR aber noch wesentlich größere verfügrbar sind (Mega128: 128kB Programmspeicher und bis zu 64kB Datenspeicher) sollte man vielleicht schon überlegen, ob man nicht in die Zukunft investieren solle, auch wenn der 8515 erstmal etwas teurer ist. Denn wenn man sich erstmal für einen Controller entschieden hat und dieser dann nicht mehr ausreicht muß man wesentlich mehr an Geld und Zeit investieren, um auf den neuen umzusteigen. Naja, war vielleicht jetzt etwas zu philosophisch, aber so denke ich nunmal darüber. Gruß Markus
Ach ja, ganz nebenbei: mir ist beim Studium der Datenblätter gerade aufgefallen, das 89C52 und 8515 praktisch pinkompatibel sind. Es gibt wahrscheinlich nur ein paar Probleme mit externem Speicher, da sich das Speicherinterface der beiden geringfügig voneinander unterscheidet
Hallo, das mit den Frequenzen ist garnicht so schlimm. Bei meinem HC08 wird der Takt auch intern geteilt. Deshalb wird bei den Teilen auch nur von der Busfrequenz geredet. Jedenfalls gehen die 32 MHz nur vom Oszillator in die MCU. Das ist relativ unkritisch, wenn man das Signal nicht 3 mal über die Platine schleift sondern kurz hält. Der rest läuft alles mit wesentlich geringeren Frequenzen. Ich weiß jetzt nicht wie das beim 89C52 ist aber den HC08 kann man auch mit nem 32 kHz quarz betreiben und die Interne PLL sorgt dann für die hohen Frequenzen. Ist aber eiegntlich einfacher ein Hochfrequentes Signal zu verlegen als den Oszillator sauber aufzubauen. Eckard
Hi Axel, für den 8051 wird sehr oft ein 11,0592MHz Quarz verwendet, das ergibt etwa 0,9MIPS und ist fast immer ausreichend. Die 8051 sind billiger, weil es so viele andere Hersteller (mindestens 10) gibt, dadurch sind auch Lieferengpässe nicht so kritisch wie beim AVR. Der kleinste 8051 ist von Cygnal (3*3mm²), also nicht zu heftig einatmen, wenn der auf dem Tisch liegt :-) Die größten 8051 mit internem Speicher haben 96KB bzw. bis zu 4MB extern anschließbar. Die schnellsten 8051 haben bis zu 50MIPS bei 50MHz (100MIPS sind angekündigt). An Peripherie gibt z.B. neben ADC, I2C usw. auch CAN, MP3, Ethernet(angekündigt) on Board. Der größte Vorteil des 8051 gegenüber dem AVR ist aber der, daß mindestens 2, oft aber 4 verschiedene Interruptprioritäten unterstützt werden. Gerade bei komplexeren Programmen ist das entscheidend. Der 8051 kann dadurch wesentlich schneller auf Interrupts reagieren als der AVR auch wenn gerade noch andere Interrupts behandelt werden. Der 8051 ist auch Weltmeister im Speicherverbrauch, d.h. ein C-Programm auf dem 8051 braucht nur unwesentlich mehr Programmspeicher als in Assembler. Beim AVR ist der Unterschied wesentlich größer. Ein 8051-Programm mit 64kB würde auf einem AVR etwa 80kB Speicherverbrauch entsprechen. Beim Neuanfang, würde ich 8051 mit UART-Bootloader empfehlen (z.B. T89C51RD2, P89C668). Das ist wesentlich zuverlässiger, als das Programmieren des AVR über die parallele Schnittstelle und geht auch unter Linux. Peter
Hi Peter, also es mag ja schnellere und größere 8051 Clone geben, aber die sind doch für Hobbyelektoniker kaum zu bekommen, zu bezahlen und zu handhaben. Das mit den IRQ's mag zwar stimmen, aber ich sehe das nicht ganz so kritisch. Und das mit dem Speicher glaub ich nun gar nicht, es sein denn Deine Zahlen stammen vom AVR GCC. Da mag das sein. Aber vergleiche mal Compiler von professionellen Herstellern. Da schneidet der AVR deutlich besser ab. Schließlich ist der Core der AVR für Hochsprachen entwickelt worden. Durch die 32 Arbeitsregister (gegenüber 3 beim 8051) hat man sowohl Performance als auch Speichervorteile. Wenn ich die Wahl hätte zwischen einem 16Mips AVR und einem 24Mips 8051 wüsste ich, was ich nehme. Aber ich glaube, wir sollten diese Diskussion hier mal beenden. Die sind eh fruchtlos weil jeder seine Favoriten hat. Ein objekiver Vergleich ist sowieso schwer, da es vom Anwendungsfall und vom Geldbeutel abhängt. Gruß Markus
> Wenn ich die Wahl hätte zwischen einem 16Mips AVR und einem 24Mips 8051 wüsste ich, was ich nehme. Ja klar, weil du nur die eine Seite kennst. Beide haben ihre Vorteile/Nachteile, aber das wurde ja schon diskutiert. Jeder soll selbst entscheiden. 8051 gibts auch in 15 Jahren noch. AVR auch? Schmittchen.
Hallo, einen Vorteil, den der 8051 gegenüber dem AVR hat: der 8051 kann Programme aus dem externen Speicher ausführen ! Dadurch braucht man keinen ICE ... ( Ich spreche hier vom 80C154, mit dem ich mich in der Vergangenheit viel beschäftigt habe. Ich bin auf die AVR`s umgestiegen, da sie eindeutig besser sind !) Gruß Matthias
@Markus, also da muß ich Doch widersprechen: Die T89C51RD2 (3,3MIPS) sind gut zu bekommen und preiswert, sowie DS80C320 usw.. Den Cygnal gibt es zumindest als komplettes Entwicklungsboard (99,-$), aber ich mach nicht gerne was mit SMD. Das mit den Interrupts ist wirklich der Hauptnachteil, warum ich den AVR nur für kleine Projekte einsetzen kann. Bei komplexeren Anwendungen hat man eben immer Interrupts, die sauschnell sein müssen, aber nur kurz sind, sowie andere, die zwar nicht oft zu bedienen sind, aber ne Menge machen müssen. Und wenn dann ein Interrupt den anderen z.B. für riesige 1ms blockiert, wäre das der Todesstoß für fast alle meiner Anwendungen. Beim Speichervergleich würde ich mich riesig freuen, wenn mir endlich einer das Gegenteil anhand einer praktischen Anwendung (nicht Sieb des Eratosthenes) aufzeigen könnte. Der 8051 hat auch nicht 3 sondern 32 Register unterteilt in 4 Bänke. Der 8051 punktet vor allem deshalb, weil man viele Operatione direkt in den unteren 128 Byte RAM ausführen kann und auch direkt im I/O-Space. Deshalb sind solche praxisnahen Sachen, wie Ansteuern von LEDs, Displays, Relais, Abfrage von Schaltern, Software-UART, SPI, I2C, 1-Wire, DCF-77 usw. wesentlich effizienter als beim AVR. Ich hab z.B. schon mehrere Projekte mit dem AT90S2313 (2kB) angefangen und dann auf dem AT89C2051 (auch nur 2kB) fortsetzen müssen, weil einfach der Flash zu Ende war. Und siehe da, ich konnte die Programme fertigschreiben ohne das ich den AT89C4051 (4kB) nehmen mußte. Und der neue ATtiny26 hat ja wieder nur mickrige 2kB. Hier hab ich mal was dazu geschrieben: http://www.specs.de/~danni/compars/ Peter
Hm, was sagt und das? beim 8051 braucht man einen optimierten 33MHz Core um einen 8MHz AVR zu toppen. Ich blick zwar noch nicht ganz durch das Programm, aber ich bin sicher, das läßt sich noch optimieren. Sorry, aber mit sowas bin ich nicht zu überzeugen. Mit 33MHz hat man einfach zuviele EMV Probleme und der Controller braucht Unmengen Strom. Leider bockt die Maxim Seite derzeit und ich kann keinen Blick in das Datenblatt werfen. Gruß Markus
Hi, wie bereits oben beschrieben halten sich die EMV Probleme in Grenzen. Was den rest der Geschwindigkeit angeht sollte man die Interne Taktung als Grundlage nehmen. Der AVR teilt halt intern nicht mehr. Wichtig ist die Länge eines Maschinenzyklusses. Ansonsten habe ich mir mal die Datenblätter von so einem AVR angesehen. Die 8 Mips halte ich für ein gerücht. Es gibt genügent Befehle die mehrere Zyklen zur Verarbeitung brauchen. Bei Normalanwendungen halte ich da 5-6 Mips für realistisch. Eckhard
Ich wollte eigentlich damit sagen, der AVR braucht mehr Programmspeicher. Der Zeitvergleich ist nicht mehr aktuell, der DS80C320 ist ja älter als die AVRs. Wie gesagt, ich arbeite meistens bei 0,9MIPS. Aber wenn Du unbedingt 8MIPS brauchst, nimm doch einen 8051 von Cygnal am 8MHZ Quarz, die 50MHz sind ja nur der Maximalwert. Z.B. C8051F236 Das die Cygnals max 50MIPS bei 50MHz können, heißt doch nicht, daß ich sie deshalb auch einsetzen muß. Peter
Hallo, ich habe die Diskussion interessiert verfolgt. Ich habe beruflich schon sehr viel mit den 8051 gemacht. Jetzt muss ich ein mittleres Projekt mit dem Mega16 machen (mit JTAGICE). Das erste, was mir negativ auffiel, ist das Fehlen von Interruptprioritäten. Man kann sich aber quasi zwei Ebenen schaffen, indem man in der niedrig priorisierten ISR sofort den globalen Interrupt wieder freigibt, in der hoch priorisierten aber nicht. Was mir aufgefallen ist: Es gibt für die AVR kein Entwicklungstool, das es annähernd mit der Keil Toolchain aufnehmen kann, auch nicht von IAR. Ansonsten: Wer die 8051 für veraltet oder zu langsam hält, der soll sich für 99$ das Development Kit für den 8051F005 von Cygnal besorgen. Der Preis ist sensationell, da ein JTAGICE enthalten ist. Ich habe zwei Projekte mit dem Prozessor gemacht und bin begeistert. Der Nachteil ist der hohe Prozessorpreis bei kleinen Stückzahlen, so dass er für Hobbyzwecke leider ausscheidet.
@Peter: Ich hab deinen Vergleich mal mit AVR-GCC (ältere Version) kompiliert. Programmgröße mit ingelinetem PRG_RDB 78 Bytes (sonst 74), ungefähr 620 Cycles (ohne main()-Geraffel). Kompiliert mit avr-gcc -c -Os -save-temps main.c Dass der Code bei einem Risc-Prozessor wie dem AVR größer ist als beim 8051, war natürlich vorherzusehen. Aber dass AVR-GCC im Vergleich zum Keil nur 40% mehr Code produziert und SDCC sogar überrundet hat mich doch etwas überrascht. Interessant wäre jetzt noch ein Vergleich mit Codevision.
Hi Andreas, vielen Dank für das Beispiel. Werde es mir mal in Ruhe ansehen. War wohl auch nicht so schwierig von 8051-C auf AVR-C zu portieren. Ich finde ja auch nichts Schlimmes daran, daß RISC nun mal mehr Codespeicher braucht. Kann man doch ruhig zugeben und dann einfach dem AT90S2313 eben 8kB spendieren, damit er mit dem AT89C4051 mithalten kann. Und die ganze Sache wäre gegessen. Peter
Hier noch mein Senf. Den 8051 habe ich viele Jahre verwendet, heute setze ich ihn garnicht mehr ein: ein AVR bietet einfach mehr. Die Prioritätsebenen beim 8051 als so großen Vorteil zu sehen, kann ich nicht nachvollziehen. Wenn es schnell gehen muß, ist sowieso Programmierung in Assembler angesagt. Und dann ist ein AVR mit der Interruptroutine schon fertig, wenn der 8051 den Int noch garnicht registriert hat. Der provokanten Aussage, daß ein 1ms Interrupt eine Anwendung verhindert, kann man in gleicher Weise entgegenhalten: der Int, der beim 8051 1ms dauert, dauert beim AVR 0,1ms; ferner wird man bei einem 'Trödel-Interrupt' nach Sichern des SREG, den globalen Int sofort wieder freigeben, damit 'wichtige' Routinen Vortritt haben. Aber das ist ja auch den 8051-Verfechtern bekannt. Es ist klar, daß man mit diversen C-Compilern für AVRs schlechte Erfahrungen machen kann. Z.B. ICC-AVR: void warten(){long n=50000;while(--n);} Diese Routine verplempert ca. 100 Byte Code und wartet richtig lange. Bei anderen Compilern darf man z.B. keine Switch-Anweisung verwenden, wenn man auf Codegröße und RAM achten muß. Andere PUSHen (ich schreib's 'mal besser so) bei jedem Int grundlos alle Register. Andere verwenden dafür noch Subroutinen: grauenhaft! Man muß bei der Programmierung eben doch auf den verwendeten Compiler Rücksicht nehmen. Es schadet nicht, den 8051 zu kennen; aber vom AVR auf einen 8051 zu Wechseln, kann ich niemand empfehlen.
Hi, ich habe auch schon beide Controller programmiert, und setze auch beide noch ein. Für kleinere Anwendungen den 2313, wenns A/D braucht, dann den 4433. Bei größeren Anwendungen greife ich aber gern auf den 80535 zurück - ist ein "großer" 8051. Ich habe am 80535 ein kleines 8K-Boot-Rom mit einem Monitor am Laufen, dadurch wird die Programm-Entwicklung zum Kinderspiel, weil man die Programme einfach im RAM ausführt. Außerdem kann ich mit Hilfe des Monitors einzelne Port-Bits auch mal von Hand modifizieren, um die Reaktionen der externen Schaltung zu sehen.
@Michael "...nach Sichern des SREG, den globalen Int sofort wieder freigeben..." Das ist doch Mumpitz ! Du must GIMSK, TIMSK, USR usw. sichern, dann alle niedrig priorisierten Interrupts sperren und dann erst den globalen Int wieder freigeben. Und am Ende das Ganze wieder rückwärts. Da das ne Menge Code werden kann, lohnt es sich durchaus, diese beiden Funktionen als Unterprogramme zu schreiben. Sie müssen ja in jedem niedrig priorisierten Interrupt gemacht werden. Z.B. wenn Du für eine schnelle Software-UART INT0 und T0 am höchsten priorisieren must. Es bleibt aber jedem selbst überlassen, ob er sich damit belasten will oder das bequem der Hardware eines 8051 überläßt. "...Wenn es schnell gehen muß, ist sowieso Programmierung in Assembler angesagt...." Gilt nicht für den Keil 8051 C-Compiler, der macht auch Interrupts äußerst effizient. Da brauch ich dann gar nicht erst Assembler und C zu mixen. Auch switch() Anweisungen setze ich gerne ein und kann nicht sagen, daß da viel Overhead entsteht. "...aber vom AVR auf einen 8051 zu Wechseln, kann ich niemand empfehlen...." Ich schon, besonders, wenn man wie ich, viel mit dem CAN-Bus macht (z.B. T89C51CC01 mit internem CAN). Man hat einfach die größere Auswahl an On-Board-Peripherie, z.B. auch 8-Kanal 24Bit-ADC (Gain 1..128), 16Bit-PWM beim MSC1210. Peter
@Peter Die globale Aussage nach dem Sichern des SREG die globalen Interrupts beim AVR wieder freizugegen ist mit Sicherheit Mumpitz. Das ich aber in jedem Fall die Interrupt Flag bzw. Mask-Register sichern muss trifft aber auch genau so wenig zu. Es kommt immer auf die jeweilige Anwendung an. Jede Prozessor-Familie sei es nun AVR, 8051 und Derivate, MPS430, M16C um nur einige zu nennen, hat ihre Vor- und Nachteile. Beim 8051 ist es ein entscheidender Vorteil, daß es zumindest bei den Standard-Type mehrere Hersteller gibt und somit durch Wettbewerb dieser auch bei kleinen Stückzahlen sehr preiswert ist. Für den 8051 ist die Keil Entwicklungsumgebung wohl eine der leistungsfähigsten für Mikrocontroller, allerdings der Preis dürfte wohl jeden Hobby-Etat sprengen. Den "optimalen" Mikrocontroller für alle Anwendungen gibt es mit Sicherheit nicht. Egal welche Familie man wählt, irgend eine Schwäche oder "Macke" hat jeder. Beim AVR sehe ich den Vorteil, daß recht brauchbare Entwicklungstools kostenlos und preiswerte Starterkits verfügbar sind. Bedingt durch sein Architektur verfügt dieser über ein recht übersichtliches Timing. Bei Bit-Operationen ist der 8051 allerdings wieder im Vorteil. Daher mein Resümee: es gibt nicht "den Mikrocontroller".
Hi, so langsam bekomme ich aber trotzdem den Eindruck, das es sich bei AVR um eine Sekte handelt. Eckhard
@Peter: Wenn ich den globalen Interrupt freigebe, geht es mir nicht darum, andere Interrupts zu sperren. Nachher soll ich auch noch die Timer sichern ? nee. Von Keil habe ich von 2.12 - 5.0 die Versionen durch. In 8051-Projekten finde ich immer wieder .A51-Quellen, die ich schreiben mußte, weil in C eben doch nicht alles so gut war. Wenn es heute diverse Derivate vom 8051 gibt, so findet man sicher schöne Peripherie, aber es gibt keinen Typ der alle Vorzüge gleichzeitig hat; folglich muß man summa summarum wieder Abstriche machen. Einen 24bit-ADC mit Gain128 auf einen Controller ist m.E. Augenwischerei! 24 Kanäle mit 8bit bringen wahrscheinlich genausoviel. Genug gestänkert. Auf Anregung von Jens (s.o.) habe ich mich bei Cygnal umgesehen. Die Daten der Chips sind zunächst beeindruckend, und für spezielle Anwendungen sind die Teile optimal. Andererseits zeigt sich aber auch, das die Architektur des Kerns veraltet ist. Jedes Rechnen - und ist es noch so schnell erledigt - muß über einen einzigen Accu laufen ! Der Stackpointer, wenn ich es richtig überschlagen habe, ist immer noch 8bit breit. Der Programmspeicher (128kB beim xx124) wird in Segmenten angesprochen. Irgendwie erinnert mich das an einen 8086, der noch im P4 steckt. Bei den 'erhaschten' Preisen muß man z.B. den C8051F124 mit 16/32bit Controllern vergleichen, die vielleicht 'nur' 20Mips machen, wo ein ADD.L R1,R2 auch nur einen Takt braucht, die 8051er aber viele, viele Takte mehr. Beim Mips-Vergleich - und auch bei der Codegröße - muß man beachten, was in einem Takt passiert. Die 8051-Familie ist über 20 Jahre alt, die AVRs sind wesenlich jünger. Vielleicht gibt es übermorgen einen AVR, der mit 100MHz rennt ? Letzlich soll jeder den Chip einsetzen, wo Leistung, Preis und Stromverbrauch (in dieser Reihenfolge) stimmen. Bei mir ist da kein 8051 mehr aufgetaucht. Michael
@Mikki, "...es gibt nicht "den Mikrocontroller"..." Dem stimme ich voll zu. Ich setze auch den AVR ein für die kleinen Sachen, z.B. den ATtiny15L. Und für die dicken Brocken (TCP/IP, Devicenet usw.) ist eben der 8051 mein Arbeitspferd. @Michael, wenn Du keine anderen Interrupts sperrst, hast Du doch wieder das gleiche Dilemma, jeder auch niedrig priorisierte Interrupt funkt Dir dazwischen. Schlimmer noch, der Interrupt kann sich sogar selbst unterbrechen -> Chrash Bum Bang. Der Weg muß prinzipiell so wie beschrieben sein, man kann natürlich je nach Fall etwas wegoptimieren. Den MSC1210 habe ich nur gerade in einem anderen Posting gesehen. Ist eine Entwicklung von Burr-Brown und die haben ihren Analogkram eigentlich immer gut im Griff gehabt. Das ist ja auch ein integrierender ADC, d.h. die HF der CPU wird wegintegriert. Wie gesagt, bei typischen Steuerungsaufgaben ist der I/O-Zugriff am häufigsten notwendig. Gerechnet wird eher selten, d.h. daß das nur der ACCU kann, wirkt sich auf die gesamte CPU-Zeit bezogen, absolut minimal aus. Und für die auch oft benötigten switch() Anweisungen gibts ja "CJNE" bzw. "JMP @A+DPTR". Bei den MCU-Auswahlkriterien sehe ich die Reihenfolge etwas anders: Als erstes kommen die Fertigkeiten, d.h. möglichst schnell möglichst optimal und zuverlässig zu programmieren. Und das geht umso besser, je besser ich mit einer MCU und deren Entwicklungsumgebung vertraut bin. Dann kommt der Preis und die Beschaffbarkeit. Der Stromverbrauch aber nur da, wo es auch eine Rolle spielt. Das Alter einer Familie sehe ich jedenfalls nicht als Kriterium an, solange sie nicht abgekündigt ist. Im Gegenteil, wenn sie sogar immer noch ständig weiterentwickelt wird, dann muß doch was dran sein, oder ? Peter
@Peter: ich glaube, wir reden genau aneinander vorbei. Wenn ich einen Int hoher Priorität bearbeite, lasse ich das Int-Flag gesetzt, sodaß global alles gesperrt ist. Nur bei einem Int, der nicht so wichtig ist, gebe ich alles wieder frei. Daß ein Int durch eine neue Anforderung ausgelöst wird, bevor er beendet ist, läßt sich ganz einfach durch vorübergehendes Löschen des Enable-Flags verhindern. Daß die interne Struktur des 8051 besser sein könnte, da wirst Du mir doch nicht widersprechen ? Jetzt ist aber Schluß. Michael
@Michael In einem Punkt muss ich Peter recht geben, wenn es darum geht konkurrierende Interrupt korrekt zu bearbeiten ist beim AVR schon etwas Überlegung angesagt. Eine konsequente Nutzung ist nicht unbedingt was für Anfänger. Wenn man heute eine neue CPU entwickeln würde, sehe deren Struktur mit Sicherheit anders aus als zu Entwurfszeiten eines 8051 oder AVR. Damals war ja jede Gatterfunktion noch wesentlich teurer als heute. Allerdings haben viele Second-Source Hersteller, darunter auch ATMEL/TEMIC eine Menge am doch recht lahmen UR 8051 verbessert. @Peter Es gibt mit Sicherheit ganz tolle 8051 Derivate die sehr schnell sind und auch über sehr leistungsfähige zusätzliche Peripherie verfügen, aber hier kriege ich oftmals bei den Lieferzeiten für eine Kleinserie Bauchschmerzen, denn die ist teilweise noch wesentlich schlechter als bei Atmel. Auch finde ich solche Aussagen wie von z.B. von Cygnal von 50 bzw. Mips reichlich übertrieben. Welches Flash oder SRAM verkraftet Zykluszeiten von 10 bzw. 20 ns. Hier sollte man doch eher die Zeiten berücksichtigen, mit denen sich reale Systeme problemlos realisieren lassen.
@thkaiser Ich habe am 80535 ein kleines 8K-Boot-Rom mit einem Monitor am Laufen, dadurch wird die Programm-Entwicklung zum Kinderspiel, weil man die Programme einfach im RAM ausführt. Außerdem kann ich mit Hilfe des Monitors einzelne Port-Bits auch mal von Hand modifizieren, um die Reaktionen der externen Schaltung zu sehen. Ich habe jemanden der sich für so ein Programm interessiert könntest Du das einstellen ? Paul
Nur falls da noch mal jemand reinschaut nach so vielen Jahren, (wie ich z.B. gerade), der Vollständigkeit halber ... 89C52 und Kompatible wirds wahrscheinlich auch noch in 10 Jahren geben, da sie in Millionen von Geräten verbaut sind. Was die Taktfrequenz angeht, die meisten 89C52 haben einen Teiler von 12, (ein paar Modelle auch 6), d.h. jeder Maschinenbefehl braucht zur Ausführung immer 12 , (manche Befehle auch 24), Oszillatortakte. Also wenn ein 89C52 mit 24 MHz getaktet wird bringt er maximal eine Leistung von 24000000/12 = 2000000 Millionen Befehlen pro Sekunde, (=2MIPS). Ein mit der gleichen Frequenz getakteter aktueller AVR-RISC Prozessor würde stattdessen eine Leistung von 24000000 Millionen Befehlen pro Sekunde, (=24MIPS), bringen. Also 12 zu 1 für den AVR-Mikrocontroller allein was die Geschwindigkeit angeht! Zudem verfügen die meisten AVR im Gegensatz, zu den 89C52 Controllern, (es gibt ein paar Ausnahmen), über eingebaute AD-Wandler, PWM-Generatoren und mehr internes RAM. Tja da lässt sich nicht viel dran rütteln aber die 8051-Kompatiblen gehören zu den rüstigen Rentnern! Was natürlich nicht heißt, dass man nicht jeden Tag mit der Situation konfrontiert werden könnte, sich mit so einem Teil beschäftigen zu müssen. Aber keine Sorge das macht auch Spaß! Also am besten gleich mal den alten, defekten VHS-Rekorder aus den 90ern zerlegen, da ist bestimmt einer drin und mit einem externen EPROM oder RAM lässt er sich wieder zum Leben erwecken!
Das muss natürlich anstatt Millionen: 2000000 Befehle pro Sekunde =(2MIPS) und 24000000 Befehle pro Sekunde =(24MIPS) heißen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.