Forum: Mikrocontroller und Digitale Elektronik 8051 hex file erzeugen


von Michael (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Hi,

Dank dir schon mal für die Antwort. Ich gucke mir das mal genau an.

Worauf sollte man beim sdcc achten damit keine Merkwürdigkeiten 
auftreten?

Lg

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?


von Michael (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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.

von Carl D. (jcw2)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

Das dachte ich mir schon fast. Danke erstmal an alle. Ich glaube ich 
habe zutun :)

von Lothar (Gast)


Lesenswert?

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 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.

http://www.silabs.com/products/mcu/Pages/simplicity-studio.aspx

Carl 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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

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".

von Philipp Klaus K. (pkk)


Lesenswert?

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

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.