zum Directory-modus

PIC-Mikrocontroller

Statusregister

Über den Zustand bzw. den Ausgang der in der ALU ablaufenden Operation kann das Statusregister Auskunft geben. In diesem 8 Bit breiten Register entspricht jedes Bit einer ganz bestimmten Meldung des zuletzt ausgeführten Befehls. In der folgenden Tabelle sind die Bedeutungen der einzelnen Bits aufgeführt:

Tab.1
Bedeutung der Register-Bits
BitBedeutung
0Carry-Bit
1Digital-Carry-Bit
2Zero-Bit
3Power-Down-Bit
4Time-Out-Bit
5,6Seitenadresse (nur 16C56, 57 und PIC 16CxX)
7nicht genutzt

Das Carry-Bit dient als Übertrag bei allen Rechen- und Schiebeoperationen. Es wird gesetzt, wenn eine Addition einen Überlauf des Arbeitsregisters erzeugt. Vor einer Subtraktion sollte es gesetzt werden, da es beim Entstehen einer negativen Zahl gelöscht wird. Bei Schiebeoperationen (Befehl RRF oder RLF) werden die aus dem Byte geschobenen Bits zunächst in das Carry-Bit geschoben. Das Digital-Carry-Bit wird bei den Addierfunktionen ADDWF ADDLW benötigt. Prinzipiell erfüllt es die gleiche Funktion wie das Carry-Bit, nur dass es sich bei arithmetischen Operationen nicht auf das ganze Byte, sondern lediglich auf das untere Nibble (Bytehälfte) bezieht. Wenn also bei einer Addition im unteren Nibble ein Wert größer 15 entsteht, wird das Digital-Carry gesetzt. Das Zero-Bit wird nur dann gesetzt, wenn bei einer Operation der Wert 0 entsteht. Dabei spielt die Art der Operation keine Rolle; jede Operation, bei der eine Null entstehen kann, beeinflusst dieses Bit. Das nächste Bit zeigt mit einer 0, dass der Prozessor sich im Power-Down-Modus befindet (z.B. wurde der Befehl SLEEP ausgeführt). Aus diesem Modus kann er nur noch mit einem Reset oder einem Impuls des Watch-Dog-Timers (WDT) geweckt werden. Dieses geschieht auch durch den Befehl CLRWDT

Die nächsten beiden Bits haben lediglich in den PICs 56 und 57 eine Bedeutung. Sie dienen dazu, die momentan gültige EPROM-Seite zu adressieren. Eine Seite ist immer 512 Bytes groß, sodass die PICs 54 und 55 diese Bits gar nicht brauchen. Der 16C55 mit zwei Seiten in seinem 1024 Byte großen EPROM belegt das Bit 5, der 16C56 mit vier Seiten die Bits 5 und 6. Dabei haben die Bits folgende Beziehung :

00 = Page 0 (000 - 1FF)

01 = Page 1 (200 - 3FF)

10 = Page 2 (400 - 5FF)

11 = Page 3 (600 - 7FF)

Das Bit 7 ist zur Zeit (noch) nicht implementiert. Es empfiehlt sich, dieses Bit nicht für allgemeine Zwecke zu verwenden, da ansonsten die Kompatibilität des Programmes zu späteren Controller-Versionen gefährdet ist. Um zwischenzeitlich Daten abspeichern zu können, ist in den PIC-Controllern selbstverständlich etwas RAM untergebracht. Anders als der Programmspeicher sind diese sogenannten File-Register in Wörter zu je 8 Bit, also einem Byte orientiert. Dabei haben die meisten PIC-16-Typen einen Datenspeicher, der in mehrere Bänke aufgeteilt ist. Das bedeutet, dass mehr zusätzliche Bits zur Adressierung von Datenspeicher nötig sind als in den Befehl hineinpassen. Diese Bits müssen in andere Register ausgelagert werden. Diesen Vorgang nennt man Bankselektierung. Die PIC16C57 und PIC16C58A besitzen vier Bänke, während die PIC16CXX zwei Bänke aufweisen. Bei den Typen PIC16C57 und PIC16C58A werden zur Bankselektierung die Bits 5 und 6 im FSR gesetzt, was bei einer indirekten Adressierung quasi automatisch geht, denn man schreibt die gesamte Register-Adresse einschließlich der zusätzlichen Bits einfach in das FSR und braucht sich um das Selektieren von Register-Bänken nicht mehr zu kümmern.

Anders verhält es sich bei den PIC16CXX-Derivaten, die alle zwei Register-Bänke mit je 128 Registern besitzen. Das höchste Bit wird in das Status-Register geschrieben (Bit 5). Bei der Adressierung über das FSR können alle Register über eine 8-Bit-Adresse angesprochen werden.

Seite 8 von 10