PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu FSR?



kante23
09.12.2007, 17:37
Hallo,
nachdem ich mich fast den gesammten Samstag und Sonntag mit dem 16F88 rumgeschlagen habe, und mein Programm in Real einfahc nicht so funktioniern wollte wie es es in der Simulation getan hat, hab ich nach ein wenig Internetrecherche einen Code gefunden der mir weiterhalf. Es geht um die Ansteuerung eines LCDs mit HD44780. Hab meinen für den 16f28a entwickelten Code, der auch auf diesem wunderbar funktioniert hat, zu ansteuerung genommen und nichts hat funktioniert. Nun ja jetzt geht es zumindestens einigermaßen und der Knackpunkt war diese Stück Code:



MOVLW H'20' ; begin reset vars
MOVWF FSR
initvar CLRF 0
INCF FSR,F
MOVLW H'80'
XORWF FSR,W
BTFSS STATUS,Z
GOTO initvar


Wie gesagt hab dies im Inet gefunden und in meinen Übernommen. Nun geht es. Dazu nun auch meine Frage: Was hat es mit dieser Schleife aufsich? Denke mal das ist dazu da um den Variablen-Speicher zwischen 0x20 und 0x80 zu leeren. Doch was macht dieses "CLRF 0"? Nimmt es die Aktuelle Adresse aus dem FSR und setzt diese auf 0x00?
Und was hat es überhaupt so wirklich mit dem FSR aufsich?
Hab dazu nur halbwissen und auch noch nicht selber mit ihm gearbeitet.
Liebe Grüße Kante

Siro
14.12.2007, 12:04
Das FSR Register ist ein Index Register, zeigt also auf eine
beliebige Speicherstelle im RAM.
Hier wird das FSR zuerst auf 20 Hex gesetzt, dort beginnt
der RAM des PIC. CLRF 0 sollte man sinnvollerweise
mit CLRF INDF ersetzen, kommt aber auf das gleiche raus,
da das INDF Register an Speicherstelle 0 liegt.
Mit dem INCF FSR,F wird das Indexregister in der Schleife
jeweils um ein Byte hochgezählt, damit es auf die nächste
Speicherstelle zeigt. Hier wird also der RAM Bereich mit
Nullen initialisiert, da nach einem RESET des PICs die
Speicherstellen nicht initialisiert werden.
mfg Siro