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
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.
...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.
Oder man programmiert in C, dann macht das der Compiler automatisch. Peter
> 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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.