Programmierung AT89S51

Gast #5840359
Lesenswert?

Guten Abend,

in der Vergangenheit habe ich ausschließlich Atmegas und XMegas 
programmiert. Jetzt habe ich mir die Aufgabe gestellt, einen AT89S51 zu 
programmieren, der als SMD 44 Pin in ein Gerät eingebaut ist. Das Gerät 
ist zu hübsch, um es auseinanderzureisen, es sind Tasten dran und eine 
LCD Matrix und ein 9poliger Stecker ist dran, alles in einem hübschen 
Gehäuse versteckt. Zudem sind auf der Leiterplatte Lötstellen für TxD 
und RxD sowie SDA und SCL vorhanden. Man sollte das Ding also im 
eingebauten Zustand programmieren können. Dazu meine Fragen:
1. Was brauche ich für Hardware zur Programmierung?
2. Welche Software kann ich verwenden?
3. Wie kriege ich möglichst aufwandsarm raus, ob sich der Chip überhaupt 
von außen programmieren lässt? Oder ob er irgendwie verriegelt ist?

Noch eine Bemerkung, Der Controller hängt an einem 7,37 MHz Resonator, 
warum so eine krumme Zahl?

Danke für Eure Hilfe.
Persönliche Seite #5840380
Lesenswert?

Die AT89S-Controller werden mit SPI, ähnlich der AVRs programmiert. 
Lediglich der Reseteingang ist Hi-aktiv. Um ihn mit einem AVR-Programmer 
zu beschreiben muss also Reset negiert werden, am einfachsten mit einem 
PNP-Transistor und 2 Widerständen. Wenn AVRDUDE dafür genutzt werden 
soll, muss die Konfigurationsdatei erweitert werden, im Anhang der Teil 
für den S52. Gegebenenfalls genügt es, die Signatur in die des S51 zu 
ändern, wenn man nicht versucht, mehr reinzuschreiben, als in den S51 
reinpasst.
Das umfangreichere Thema ist, wo das Programm herkommt. Der SDCC soll 
für die 51er ganz gut sein, ich arbeite selbst dafür aber nur mit 
Assembler (AS von Alfred Arnold).
Angehängte Dateien:
Persönliche Seite #5840385
Lesenswert?

ArduStemmi schrieb:
> 3. Wie kriege ich möglichst aufwandsarm raus, ob sich der Chip überhaupt
> von außen programmieren lässt? Oder ob er irgendwie verriegelt ist?

Kleine Ergänzung noch:
Die SPI-Signale liegen auf dem PLCC auf folgenden Pins:
MOSI P1.5 Pin7
MISO P1.6 Pin8
SCK P1.7 Pin9
Reset Pin10

Die müsstest du also ausklingeln.

Verriegelt kann er nur gegen Auslesen sein, Löschen und Neuprogrammieren 
sollte in jedem Falle möglich sein.

Edit: habe mal die Datei angepasst, müsste an die reguläre 
"avrdude.conf"angehängt werden.
Angehängte Dateien:
(Firma: matzetronics) #5841163
Lesenswert?

Ingo W. schrieb:
> Um ihn mit einem AVR-Programmer
> zu beschreiben muss also Reset negiert werden

Wenn man einen AVRISP MkII hat, ist das nicht nötig. Der Programmer 
kommt mit diesem Resetsignal klar, wenn man ihm nur das richtige Device 
sagt.
Hier der Inhalt meines kleinen Batchfiles für Win, auf das man per 
Drag&Drop ein Hexfile für den 89S52 fallen lässt, um ihn zu 
programmieren:
1
set prog="C:\xasm\AVR\STK500\Stk500.exe"
2
%prog% -cUSB -dAT89S52 -e -if%1 -pf -vf
3
pause

Als Programmierumgebung hat sich bei mir MIDE51 bewährt. Da gibts den 
ASEM51 von W.W.Heinz und den SDCC, den ich aber noch nie benutzt habe.
http://www.opcube.com/home.html
Gast #5841304
Lesenswert?

Software SDCC ist durchaus recht gut.

>> Als Programmierumgebung hat sich bei mir MIDE51 bewährt.
Die SDCC Version die mit MIDE51 gepackt ist, ist sehr alt, hier also 
eine aktuelle Version verwenden. MIDE51 hat keinen Support mehr.

Ansonsten den Keil C Compiler (gibts mittlerweile kostenlos). Siehe auch 
https://www.silabs.com/products/development-tools/software/8-bit-8051-microcontroller-software

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren