zum Directory-modus

PIC-Mikrocontroller

Indirekte Adressierung und Ports

File Select Register (FSR)

Das File Select Register (FSR), zu deutsch "Bankauswahlregister" ist nichts anderes als ein Zeigerregister. Mit ihm kann man indirekt adressieren (siehe auch INDF). Diese Adressierungsart wird über die Bits 0 bis 4 des Registers an der Adresse 4. Mit diesen Bits kann die Zahl 00h bis 1Fh erzeugt werden, und diese Zahl ist ein Zeiger, nämlich die indirekte Adresse eines weiteren Registers. Der Inhalt des indirekt adressierten Registers ist nun im Register an der Adresse 0 zu finden, die in Header-Dateien gewöhnlich mit dem Variablen-Namen INDF deklariert wird. Möchte man zum Beispiel den Inhalt des Registers an der Stelle 9 lesen, so muss im Register 4 eine 9 stehen. Dann kann aus dem Register 0 der Inhalt des Registers 9 gelesen werden. Wichtig ist, dass die beiden höchsten Bits des FSR-Registers, selbst wenn sie mit 0 beschrieben werden, als 1 gelesen werden. Dies ist von entscheidender Bedeutung z.B. bei Abbruchbedingungen, die aufgrund eines bestimmten Wertes im FSR-Register erfolgen. Hier sollte man die letzten beiden Bits vorher auf 0 setzen.

Ports

Die drei Register mit den Speicheradressen 5 bis 7 stellen die Verbindung zur Außenwelt dar. Ihr Inhalt entspricht dem Zustand der I/O-Ports des Bausteins. Ein Lese- oder Schreibzugriff auf diese Register entspricht also einer Ein- oder Ausgabe über diese Ports. Beim PIC16C5X ist PORTA ein 4 Bit I/O-Register, d.h. 4 Pins können an Port A gesetzt werden, das sind im Register PORTA die Bits 0 bis 3. Port B besteht aus 8 Pins, dabei können im Register PORTB alle Bits gesetzt werden. Das Register PORTC an der Speicheradresse 7 ist bei der PIC16C5X Familie nur bei den Typen PIC16C55/C57 ein 8-Bit Register, bei den PIC16C54/CR54/C56 ist ein Register für den allgemeinen Gebrauch. Alle PIC16 besitzen eine unterschiedliche Anzahl I/O-Bits, welche alle bitweise als Ein- bzw. Ausgänge konfiguriert werden können. Dies geschieht durch das Tristate-Register. Als Parameter muss die Adresse des Registers des anzusprechenden I/O-Ports übergeben werden. Eine 1 im Tristate-Register bedeutet dabei, dass der betreffende Pin als Eingang geschaltet ist, ein gelöschtes Bit aktiviert den Ausgangsteiber des PIC's. Grundsätzlich werden nach einem System-Reset alle Pins als Eingang geschaltet. Man muss also alle Ausgänge am Beginn des Programms konfigurieren, was beim PIC16C5X durch den Befehl TRIS erfolgt. Dazu wird die Speicheradresse des Ports angegeben, also 5 für Port A, 6 für Port B und 7 für Port C.

Die Bedienung der I/O Ports erfolgt, indem die Ausgabewerte in die Register geschrieben werden und die Eingangswerte von derselben Registeradresse gelesen werden. Vorsicht ist geboten, wenn man Portbits mit ständig wechselnder Richtung verwendet und sogenannte "read-modify-write" Befehle auf das Port-Register verwendet. Bei dem Befehl BCF handelt es sich um so einen Befehl. Diese Befehle lesen den betreffenden Register-Wert in die CPU ein, führen die Bit-Operation aus und geben das Ergebnis aus. Wurde vorher die Richtung des betreffenden Ports umgekehrt, dann können Portbits des betreffenden Registers überschrieben worden sein.

Seite 5 von 10