Gast
#4287263
Hallo, ich arbeite mich gerade in die Programmierung des AT89C2051 mit C ein und möchte die Programme gerne auf einem Emulator testen. Dazu habe ich mir die MCU 8051 IDE http://www.moravia-microsystems.com/mcu-8051-ide für Windows besorgt, mit der man auch emulieren kann. (Den Link zu dieser IDE habe ich hier im Forum gefunden.) Leider meldet der Emulator selbst bei sehr einfachen C-Programmen, die mit dem SDCC kompiliert wurden, einen Fehler (siehe Screenshot). z.B.: #include <at89x51.h> void main(void) { while(1) { P1 = 0; } } Ich habe Verschiedenes ausprobiert (auch ohne Headerdatei). Um auzuschließen, das der Emulator einen Bug hat, habe ich auch Assemblerprogramme auf dem Emulator getestet. Den Erzeugten Hex Code eines C-Programms habe ich auch mal mit dem emu51 geladen, der dann sofort beendet wird. Deshalb vermute ich, dass irgend ein Parameter beim SDCC falsch ist oder fehlt. So wird der Compiler von der IDE aufgerufen: sdcc -mmcs51 --iram-size 128 --xram-size 0 --code-size 2048 --nooverlay --noinduction --verbose --debug -V --std-sdcc89 --model-small "test.c" Ich habe die neuste 64bit-Version de SDCC verwendet: SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/ h c08/s08/stm8 3.5.0 #9253 (Jun 20 2015) (MINGW64) Da mein bestelltes Programmiergerät noch nicht da ist, kann ich noch keinen Microcontroller flashen und damit Testen. Wenn jemand eine Idee hat, wäre ich sehr dankbar. Offenbar wird hier versucht, auf eine Speicheradresse zugegriffen, die es ja bei 128 Byte Speicher gar nicht geben sollte? Die interne RAM-Größe wird ja übergeben. Sascha
