zum Directory-modus

PIC17-Serie

Indirekte Adressierung

Bei der indirekten Adressierung gibt es zu den Mid-Range Prozessoren einige Unterschiede. So gibt es zwei FSR-Register sowie zwei INDF-Register. Dazu gibt es im ALUSTA-Register einige Konfigurationsmöglichkeiten. Für jedes FSR-Register sind zwei Konfigurationsbits reserviert. Für das FSR0-Register sind dies die Bits FS0 und FS1, beim FSR1-Register die Bits FS2 und FS3. 3 Modi können nun ausgewählt werden: automatische Erniedrigung der Adresse um eins nach einem Zugriff (beide Bits 0), automatische Erhöhung der Adresse um eins nach einem Zugriff (FS0=1, FS1=0 bzw. FS2=1, FS3=1) oder keine Änderung der Adresse nach einem Zugriff (FS0=x, FS=1 bzw. FS2=x, FS3=1).

Beispielprogramm für die indirekte Adressierung bei der PIC17-Reihe:

; Es wird auch der Gebrauch des ALUSTA-Registers demonstriert. Mit dem Programm ; wird der Speicher von der Adresse 20h bis FFh gelöscht. ; (Beispiel im Data Book, PIC17Cxx, Kapitel 6.4.1)

LIST P=17C44

#include "P17C44.INC"

END_RAM EQU 0Ah

movlw 20h ; Legt die Anfangsadresse fest

movwf END_RAM

movlw 019h

movwf FSR0 ; Transferiert einen zufälligen Wert in das FSR0-Register

bcf ALUSTA,FS1 ; Konfiguriert das ALUSTA-Register (FSR0-Register wird automatisch

bsf ALUSTA,FS0 ; bei jedem Schreibzugriff inkrementiert)

bcf ALUSTA,C ; das Carry-Bit wird gelöscht

movlw END_RAM+1

LP clrf INDF0 ; Löscht das Register, auf das FSR0 zeigt

cpfseq FSR0

goto LP

END

Seite 5 von 5>