Hallo,
Ich habe ein AVR Studio Projekt für einen AT90S8515.
Nun möchte ich dieses Projekt für den nahezu pinkompatibelen AT89S52
umstricken.
Mir ist klar das AVR Studio den AT89S52 nicht unterstützt. Als
programmer nutze ich Ich einen arduino (
https://tiktakx.wordpress.com/2014/04/19/programming-8051-using-arduino-up-for-grabs/
).
Mein Problem ist nun, wie ich das hexfile compilieren kann.
Hat da jemand eine Idee für mich?
Mit freundlichen Grüßen
Michael schrieb:> Mein Problem ist nun, wie ich das hexfile compilieren kann.
Ein Hexfile musst du nicht mehr kompilieren, aber du meinst
wahrscheinlich, wie du Code für den MCS51 erzeugen kannst?
Ich nehme dazu die MIDE-51 Entwicklungsumgebung mit Assembler und dem
umstrittenen SDCC C-Kompiler.
http://www.opcube.com/home.html#MIDE51
Aber es gibt noch ein paar andere:
https://en.wikipedia.org/wiki/MCU_8051_IDE
Vorsicht mit C auf dem alten Schlachtross. SDCC ist bekannt für
Merkwürdigkeiten.
Michael schrieb:> Worauf sollte man beim sdcc achten damit keine Merkwürdigkeiten> auftreten?
Ihn am besten nicht benutzen :-P Da kann ich dir nicht viel zu sagen,
denn ich habe die alten 8051 immer in ASM programmiert, das war bei den
Dingern die logische Wahl für mich.
Aber es schadet sicher nicht, sich das Kompilat des SDCC mal mit einem
Disassembler anzuschauen. Zwei Simulatoren sind bei MIDE 51 bei, beide
allerdings nicht in Vollversion.
Nochmal zum Ausgangspunkt - du bist dir wirklich sicher, einen recht
modernen 8515 gegen die alte Möhre tauschen zu wollen? Denk dran, das
der 89S52 bei gleicher Taktfrequenz etwa 12 mal langsamer ist als der
8515. Halt, es kann sein, das der 89S52 den X2 Mode unterstützt - dann
ist er nur noch etwa 6 mal so langsam.
Der ATMega 8515 ist der legitime Nachfolger des AT90S8515.
Hi,
ja ich bin mir sicher ;). Um Geschwindigkeit gehts bei meinem Projekt
nicht so. Jedenfalls in diesen Bereichen. Ausserdem liegen Sie rum und
wollen benutzt werden.
Also ich habe mir jetzt mal MIDE angeschaut. Hab SDCC und den ASEM51
geladen und ins Programm importiert.
Doch leider vermeldetet der SDCC das er keine Header Datei findet.
avr/io.h
avr/eeprom
avr/interrupt.h
fatal error /avr/io.h no such file or directory
hat jemand Erfahrung damit?
den UC51 schaue ich mir gerade an.
lg
Michael schrieb:> Doch leider vermeldetet der SDCC das er keine Header Datei findet.>> avr/io.h
Ist sein gutes Recht, was soll er mit AVR-Zeugs.
Lade mal ein C51-Beispielprojekt und schaue Dir an, wie dort die
Includes heißen.
Hi,
Ahhhhhhh. Stimmt. Er kennt diese Header natürlich gar nicht.
Das C Programm kommt ja von einem AT90S8515.
Theoretisch könnte man die Header files aber ins Projekt importieren,
oder?
Danke erstmal.
Ports, Timer, Interrupts, ... werden auf einen 51er ganz anders bedient,
als auf einem AVR. Alles was damit zu tun hat, darfst du vermutlich eh
neu schreiben. Ich hab erst vor kurzem mal ein 51er C-Programm
geschrieben, weil am TG meiner Tochter noch nichts moderneres benutzt
wird. Da merkt man erst man, was man an einem AVR hat.
Michael schrieb:> Nun möchte ich dieses Projekt für den nahezu pinkompatibelen AT89S52> umstricken.
Wenn das Projekt nicht zu groß ist, der 8051 Standard Compiler von Keil
in der Eval-Version kommt mit allen für den AT89S52 erforderlichen
Includes und Libraries und erzeugt einwandfreien Code. Der SDCC ist auch
nicht so schlecht wie hier behauptet wurde, muss aber konfiguriert
werden, der Aufwand ist ähnlich wie bei gcc für ARMhttps://www.keil.com/c51/demo/eval/c51.htm
Falls es kein 8051 von Atmel sein muss, die meisten anderen Hersteller
bieten eine IDE mit freiem Keil Compiler z.B.
http://www.silabs.com/products/mcu/Pages/simplicity-studio.aspxCarl D. schrieb:> Ich hab erst vor kurzem mal ein 51er C-Programm> geschrieben, weil am TG meiner Tochter noch nichts moderneres benutzt> wird. Da merkt man erst man, was man an einem AVR hat.
Moderne 8051 sind viel schneller, besser ausgestattet und billiger als
jeder AVR oder auch xMEGA z.B. für 1.50 EUR 20x 14-Bit ADC und 4x 12-Bit
DAC. Nicht umsonst macht z.B. SiLabs doppelt so viel Gewinn wie Atmel.
Lothar schrieb:> Moderne 8051 sind viel schneller, besser ausgestattet und billiger als> jeder AVR
Der TE hat aber den AT89S52, da ist nichts besseres drin als in jedem
anderen 8052, ausser dem X2 Bit. Im Gegenteil - Der 8515 hat Hardware
PWM, einen USART und SPI, ausserdem wenigstens einen Analog Komparator.
Ausserdem könnte es beim RAM knapp werden, denn der 8515 hat immerhin
512 Bytes RAM und 512 Bytes EEPROM.
@TE: Achte beim Verpflanzen des 89S52 auf die umgekehrte Reset
Polarität. Traditionell werden MCS51 durch ein 'High' zurückgesetzt,
AVRs jedoch durch 'Low'. Du musst also die Resetschaltung etwas umbauen.
Michael schrieb:> Theoretisch könnte man die Header files aber ins Projekt importieren,> oder?
Nein.
Es geht nicht darum, daß der Compiler zufrieden ist, sondern die
IO-Adressen müssen natürlich auch stimmen.
Bezüglich Core gibt es beim 8051 keine Unterschiede, es reicht also das
richtige *.h-File aus, z.B. "reg52.h".
Lothar schrieb:> Wenn das Projekt nicht zu groß ist, der 8051 Standard Compiler von Keil> in der Eval-Version kommt mit allen für den AT89S52 erforderlichen> Includes und Libraries und erzeugt einwandfreien Code. Der SDCC ist auch> nicht so schlecht wie hier behauptet wurde, muss aber konfiguriert> werden, der Aufwand ist ähnlich wie bei gcc für ARM>> https://www.keil.com/c51/demo/eval/c51.htm>> Falls es kein 8051 von Atmel sein muss, die meisten anderen Hersteller> bieten eine IDE mit freiem Keil Compiler z.B.
Existierenden Code vom GCC-AVR zum 8051 zu portieren dürfte mit SDCC
einfacher sein, da die C-Standards besser unterstützt werden. Zwar ist
SDCC nicht so gut wie GCC, aber Keil macht halt einen Compiler für ANSI
C von 1989, während SDCC auch die neueren ISO C-Standards von 1999 und
2011 zumindest zu großen Teilen unterstützt.
Philipp