Forum: Mikrocontroller und Digitale Elektronik Alle Variablen im PIC resetten


von Thomas M. (xt-fahrer)


Lesenswert?

Hallo
in meinem aktuellen Programm für den 16F84A habe ich ca. 20 
Speicherzellen, die ich im Fall eines Resets löschen muß, d.h. 20 mal 
clrf xxx. Geht das nicht einfacher?

Gruß
Tom

von Michael S. (rbs_phoenix)


Lesenswert?

Wenn alle Speicherzellen hintereinander sind (z.B. von 0x30 bis 0x44), 
kannst du eine Schleife machen, dass du von 0x30 bis 0x44 hochzählst, 
die zahl ins FSR schreibst und die Speicherzelle mithilfe von clrf INDF 
löscht. Siehe Seite 19 im Datenblatt.


Musst mal nachrechnen, ob das bei 20 Zellen schon sinn macht.

von Jens (Gast)


Lesenswert?

...normalerweise hat man beim Programmstart schon definierte 
Anfangszustände in Variablen, die müssen ja eh schonmal irgendwo gesetzt 
werden. Den Punkt würde ich ggf. nach vorn ziehen...

Ansonsten wirklich über indirekte Adressierung wie oben beschrieben, die 
Adresse der Ramzelle nach FSR und ein clrf auf INDF ausführen.

J.

von Peter D. (peda)


Lesenswert?

Oder man programmiert in C, dann macht das der Compiler automatisch.


Peter

von Michael R. (mexman) Benutzerseite


Lesenswert?

> Speicherzellen, die ich im Fall eines Resets löschen muß, d.h. 20 mal
> clrf xxx. Geht das nicht einfacher?


Hallo Tom,

da gibt es von Microchip eine Application Note auf der Webseite dazu, 
wie man mit indirekter Adressierung und Schleife sowas macht.

Such mal dort.

Gruss

Michael

von SIm Nutzer (Gast)


Lesenswert?

20 x clrf ist doch einfach oder versteh ich da jetzt was falsch?
In ein kleines Unterprogramm packen evtl. in externer Datei und bei 
Bedarf aufrufen bei Reset org 0000 und bei Programmstart org 
irgendwas...

Geht schnell und verbraucht wenig Platz.

Gruß
Thomas

von Michael S. (rbs_phoenix)


Lesenswert?

SIm Nutzer schrieb:
> 20 x clrf ist doch einfach oder versteh ich da jetzt was falsch?

Michael Skropski schrieb:
> Musst mal nachrechnen, ob das bei 20 Zellen schon sinn macht.


Das meinte ich. Man muss sich angucken, wieviel Befehle man bei der 
Schleife braucht. Sollte der Programmspeicher aber für die 20 Befehle 
noch ausreichen, wäre mir der Aufwand beim programmieren der Schleife 
nicht wert. Und es geht schneller

von John (Gast)


Lesenswert?


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.