Forum: Mikrocontroller und Digitale Elektronik C-Programm auf AT89C2051 spielen


von Marvin W. (vram)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

dies ist mein erster Beitrag in diesem Forum, da ich über die 
Such-Funktion mein Problem nicht lösen konnte.

Problem ist folgendes, ich beschäftige mich zur Zeit mit einem kleinen 
Projekt, in dem ich eine kleine LED-Schaltung mit einem AT89C2051 
programmieren soll.

Das Projekt ist eine Veränderung einer bereits bestehenden Schaltung, in 
welcher aber nur der Port 1 genutzt wurde.

Zu Testzwecken habe ich diese "Grundschaltung" mal auf eine 
Lochrasterplatine aufgebaut, auch um zu sehen, ob ich die LEDs 
(low-currant) direkt mit Vorwiderständen an den µC anschließen kann oder 
ob ich noch ein paar OPs benutzen muss.

Soweit so gut, die Schaltung funktioniert. (Getestet mit einem bereits 
programmiertem µC der Vorgängerschaltung)
Das C-Programm dass ich zum testen benutze läuft in der Simulation von 
Keil auch. Es besteht einfach nur daraus, dass ich P1.7 an- und 
ausschalte, einfach nur um zu sehen ob das Signal übertragen wird.

Um das Programm auf den µC aufzuspielen, benutze ich einen Galep-4.

Und genau hier liegt mein Problem. Wenn ich meine Hex-Datei als .bin in 
das Galep-Programm lade und damit den µC programmiere, sagt mir Galep 
zwar das Programm wäre drauf, wenn ich den µC dann aber in meine 
Schaltung einsetze gibt er mir keine Signale aus.

Um Vorweg einiges zu klären, der Takt meines Quarzes kommt an. Den 
Schaltplan hab ich mal mit angehängt.
Ich selbst benutze die Demoversion von Keil, habe aber in anderen 
Beiträgen bereits gelesen, dass das ein Problem sei bei dem AT89C2051 
wegen dem Compiler. Mein Arbeitskollege hat zum Glück die Vollversion, 
aber auch dort klappt es nicht. :/

Nun nach geschätzt 100000 Wörtern mal zu meiner Frage:

Weiß jemand wie ich die Einstellungen von Keil, bzw. Galep verändern 
muss, um mein C-Programm so auf den µC zu bekommen, dass er mir die 
Signale ausgibt?



Mit freundlichen Grüßen,

Vram

von R. W. (quakeman)


Lesenswert?

Marvin W. schrieb:
> Um das Programm auf den µC aufzuspielen, benutze ich einen Galep-4.
>
> Und genau hier liegt mein Problem. Wenn ich meine Hex-Datei als .bin in
> das Galep-Programm lade und damit den µC programmiere, sagt mir Galep
> zwar das Programm wäre drauf, wenn ich den µC dann aber in meine
> Schaltung einsetze gibt er mir keine Signale aus.

Ich denke dein Problem liegt auf der Hand. Du lädst das Hex File als Bin 
File in Galep ein. Das passt nicht zueinander. Du musst das Hex File in 
Galep auch als "Intel Hex" File einlesen, ansonsten bekommst du nur 
kauderwelsch in Galep. Galep unterstützt Bin und Hex Dateien beim 
Einlesen, du musst nur das Format beim Öffnen der Datei dementsprechend 
einstellen.

Ciao,
     Rainer

von Marvin W. (vram)


Lesenswert?

Hallo Rainer,

danke schon mal für die schnelle Antwort :)
Leider behebt das mein Problem noch nicht. Wenn ich meine Hex-Datei als 
Intel-Hex lade sagt mir Galep "Geladene Daten für ausgewähltes Bauteil 
zu groß"

von Thomas E. (thomase)


Lesenswert?

Marvin W. schrieb:
> Hallo Rainer,
>
> danke schon mal für die schnelle Antwort :)
> Leider behebt das mein Problem noch nicht. Wenn ich meine Hex-Datei als
> Intel-Hex lade sagt mir Galep "Geladene Daten für ausgewähltes Bauteil
> zu groß"

Dann hast du ein anderes Problem. Der Code, der erzeugt wird ist >2K.
Entweder du speckst dein Programm ab oder du nimmst einen AT89C4051. Der 
hat 4K Speicher.

mfg.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Marvin W. schrieb:
> Geladene Daten für ausgewähltes Bauteil
> zu groß

Die Keil-Demo wird wohl den Code nicht ab 0x0000 starten, sondern höher.

Kann man im Galep den Code editieren, dann lösch einfach alles vor dem 
eigentlichen Code raus, der dürfte ab 0x0800 oder 0x8000 stehen.

von Cargo Cult Priest (Gast)


Lesenswert?

>sagt mir Galep "Geladene Daten für ausgewähltes Bauteil
>zu groß"

Ist dein Google kaputt?
http://www.keil.com/forum/3706/

von Georg G. (df2au)


Lesenswert?

Peter Dannegger schrieb:
> Kann man im Galep den Code editieren, dann lösch einfach alles vor dem
> eigentlichen Code raus, der dürfte ab 0x0800 oder 0x8000 stehen.

Der steht in der Demo Version ab 0x800 und ist auch für diese Adresslage 
reloziert. Die Demo Version ist schlicht für den AT89C2051 nicht 
geeignet.

von Peter D. (peda)


Lesenswert?

Georg G. schrieb:
> Der steht in der Demo Version ab 0x800 und ist auch für diese Adresslage
> reloziert.

Das stört den 2051 nicht, der ignoriert die oberen Adreßbits einfach.
Man muß eben bloß die ersten 2048 Bytes aus dem Bin-File rauslöschen, 
dann paßt es in den 2051.

von tom (Gast)


Lesenswert?

nimm doch sdcc anstelle keil ?

oder du besorgst dir eine schön alte version vom keil51 (musste mal 
googeln), der macht keinen offset ab 0x800.

bestimmt hat noch jemnd eine alte keil cd irgendwo zu liegen...

gruss, tom.

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.