-         

Ergebnis 1 bis 2 von 2

Thema: Frage zu FSR?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    24

    Frage zu FSR?

    Anzeige

    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:
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    523

    RE FSR

    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •