Forum: Mikrocontroller und Digitale Elektronik AT89S52 Alle Register auf Null vor Start?


von Oliver D. (highspeed-oliver)


Lesenswert?

Hallo,

mal kurz ne frage. Ich habe hier ein Programm das per Interrupt Routine, 
ausgelöst durch Timer0, LEDs blinken lässt an SFR 0x80 also Port 0.

Nun habe ich mir ein Programm geschrieben, welches ebenfalls per Timer 0 
an Port 3 4 7 Segment anzeigen Per multiplexing und 7447 betreibt.

Das komische ist, es laufen beide Programme gleichzeitig.
Das Programm mit den LEDs habe ich vorhin drauf geladen.

Kurz danach ein komplett neues mit den 7 Segments.
Ich habe den PC mehrfach neu gestartet und in Ride und Keil neue 
Projekte angelegt.

Auch am anderen PC das gleiche Problem.
Kann es vielleicht sein, das mit dem neuen Programm die alten Register 
nicht überschrieben werden und das alte Programm quasi noch mitläuft, 
weils im Speicher ist?

Gibts eine möglich kein ein "NULL" Programm aufzuspielen, welches alle 
Register auf Werkseinstellung setzt um nicht mehr so ein programm 
gemansche zu bekommen?!?

Gerade bin ich ein wenig verwirrt deswegen ;)

Danke.

von jack (Gast)


Lesenswert?

Die SFRs haben beim Reset bestimmte Werte (z.B. Port2 0xFF), die im
DB stehen. Das SRAM, und damit alle Register, sind nach dem Reset
unbestimmt, d.h. sie können alles mögliche enthalten.
Dafür ist die Initalisierung in Deinem Programm zuständig.

von Matthias (Gast)


Lesenswert?

Normalerweise sollte beim Neuflashen der alte Inhalt gelöscht werden. 
Poste mal Dein Programm. Bei Keil gibt es eine "Startup.a51", wo man 
einige Sache zur Initialisierung des Speicheres einstellen kann, dürfte 
aber nicht das Problem lösen. Die RESET-Werte der SFR kann man meines 
Wissens nicht beeinflussen.

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.