!!UNTER BEARBEITUNG!!
| ADDLW | ADD Zahl und W |
| Syntax: | ADDLW k |
| Operanten: | 0 ≤ k ≤ 255 |
| Operation: | (W) + k → (W) |
| Beeinflusste Statusbits: | C, DC, Z |
| Beschreibung: | Der Inhalt des W Registers wird mit der 8-Bit Zahl k ADD addiert und das Ergebnis landet wieder im W Register |
| ADDWF | ADD W und f |
| Syntax: | ADDWF f,d |
| Operanten: | 0 ≤ f ≤ 127 und d ∈ [0,1] |
| Operation: | (W) + (f) → (destination) |
| Beeinflusste Statusbits: | C, DC, Z |
| Beschreibung: | Der Inhalt des W Registers wird mit dem Register f addiert und das Ergebnis landet entweder im W Register (d=0) oder im Register f (d=1) |
| ANDLW | AND Zahl mit W |
| Syntax: | ADDLW k |
| Operanten: | 0 ≤ k ≤ 255 |
| Operation: | (W) + k → (W) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Der Inhalt des W Registers wird mit der 8-Bit Zahl k verundent und das Ergebnis landet wieder im W Register |
| ANDWF | AND W mit f |
| Syntax: | ANDWF f,d |
| Operanten: | 0 ≤ f ≤ 127 und d ∈ [0,1] |
| Operation: | (W) .AND. (f) → (destination) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Der Inhalt des W Registers wird mit dem Register f verundet und das Ergebnis landet entweder im W Register (d=0) oder im Register f (d=1) |
| BCF | Bit Clear f |
| Syntax: | BCF f,b |
| Operanten: | 0 ≤ f ≤ 127 und 0 ≤ b ≤ 7 |
| Operation: | 0 → (f) |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Bit ‘b’ in Register ‘f’ wird auf 0 gesetzt |
| BSF | Bit Set f |
| Syntax: | BSF f,b |
| Operanten: | 0 ≤ f ≤ 127 und 0 ≤ b ≤ 7 |
| Operation: | 0 → (f<b>) |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Bit ‘b’ in Register ‘f’ wird auf 1 gesetzt |
| BTFSC | Bit Test f, Skip if Clear |
| Syntax: | BTFSC f,b |
| Operanten: | 0 ≤ f ≤ 127 und 0 ≤ b ≤ 7 |
| Operation: | skip if (f<b>) = 0 |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Wenn das Bit b im Register f 0 ist, dann wird der nachfolgende Befehl nicht und stattdessen ein NOP ausgeführt. Wenn das Bit b 1 ist, dann wird der nächste Befehl ausgeführt. |
| BTFSS | Bit Test f, Skip if Set |
| Syntax: | BTFSS f,b |
| Operanten: | 0 ≤ f ≤ 127 und 0 ≤ b ≤ 7 |
| Operation: | skip if (f<b>) = 1 |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Wenn das Bit b im Register f 1 ist, dann wird der nachfolgende Befehl nicht und stattdessen ein NOP ausgeführt. Wenn das Bit b 0 ist, dann wird der nächste Befehl ausgeführt. |
| CALL | Call Subroutine |
| Syntax: | CALL k |
| Operanten: | 0 ≤ k ≤ 2047 |
| Operation: | (PC) + 1 → TOS,
k → PC<10:0>, (PCLATH<4:3>) → PC<12:11> |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Als erstes wird die Rückkehradresse (PC+1) in den Stack geschrieben. Dann Die 11bit Sprungadresse in den PC geladen (die 2 MSB kommen aus dem PCLATH). |
| CLRF | Clear f |
| Syntax: | CLRF f |
| Operanten: | 0 ≤ f ≤ 127 |
| Operation: | 00h → (f),
1 → Z |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das komplette Byte im Register f wird gelöscht (lauter 0er). Das hat zur folge, das Z gesetzt wird. |
| CLRW | Clear W |
| Syntax: | CLRW |
| Operanten: | / |
| Operation: | 00h → (W),
1 → Z |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das Statusregister wird gelöscht und anschließed das Z-Bit auf 1 gesetzt. |
| CLRWDT | Clear Watchdog Timer |
| Syntax: | CLRWDT |
| Operanten: | / |
| Operation: | 00h → WDT,
0 → WDT prescaler, 1 → TO, 1 → PD |
| Beeinflusste Statusbits: | TO, PD |
| Beschreibung: | Der Watchdogtimer (TMR0) wird resettet. es wird ebenfalls der Prescaler resettet. Die Statusbits T0 und PD werden gesetzt. |
| COMF | Complement f |
| Syntax: | COMF f,d |
| Operanten: | 0 ≤ f ≤ 127 und
d ∈ [0,1] |
| Operation: | (f) → (destination) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Alle Bits des Registers f werden invertiert (1 wird 0 und 0 wird 1) und das Ergebnis entweder in den Arbeitsregister W (d=0) oder wieder in das Register f (d=1) gespeichert. |
| DECF | Decrement f |
| Syntax: | DECF f,d |
| Operanten: | 0 ≤ f ≤ 127
d ∈ [0,1] |
| Operation: | (f) – 1 → (destination) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das Register f wird decrementiert (f=f-1) und das Ergebnis entweder in den Arbeitsregister W (d=0) oder wieder in das Register f (d=1) gespeichert. |
| DECFSZ | Decrement f, skip if 0 |
| Syntax: | DECFSZ f,d |
| Operanten: | 0 ≤ f ≤ 127
d ∈ [0,1] |
| Operation: | (f) – 1 → (destination), skip if result = 0 |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das Register f wird decrementiert (f=f-1) und das Ergebnis entweder in den Arbeitsregister W (d=0) oder wieder in das Register f (d=1) gespeichert. Danach wird überprüft, ob das Ergebnis 0 war. Wenn ja, dann wird an Stelle des nächsten Befehls ein NOP durchgeführt. |
| GOTO | uncontitional Branch |
| Syntax: | GOTO k |
| Operanten: | 0 ≤ k ≤ 2047 |
| Operation: | k → PC<10:0>,
PCLATH<4:3> → PC<12:11> |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Goto veranlasst einen Sprung an die Adresse k im Programmspeicher. Es werden aber nur die 11 niedrigstens Bit der Adresse mit GOTO bestimmt, die beiden höchsten werden aus dem Register PCLATH geladen. |
| INCF | Increment f |
| Syntax: | INCF f,d |
| Operanten: | 0 ≤ f ≤ 127,
d ∈ [0,1] |
| Operation: | (f) + 1 → (destination) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das Register f wird incrementiert (f=f+1) und das Ergebnis entweder in den Arbeitsregister W (d=0) oder wieder in das Register f (d=1) gespeichert. |
| INCFSZ | Increment f, skip if 0 |
| Syntax: | INCFSZ f,d |
| Operanten: | 0 ≤ f ≤ 127
d ∈ [0,1] |
| Operation: | (f) + 1 → (destination), skip if result = 0 |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Das Register f wird incrementiert (f=f-1) und das Ergebnis entweder in den Arbeitsregister W (d=0) oder wieder in das Register f (d=1) gespeichert. Danach wird überprüft, ob das Ergebnis 0 war. Wenn ja, dann wird an Stelle des nächsten Befehls ein NOP durchgeführt. |
| IORLW | Inclusive OR Literal with W |
| Syntax: | IORLW k |
| Operanten: | 0 ≤ k ≤ 255 |
| Operation: | (W) .OR. k → (W) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Der Inhalt des W Registers wird mit der 8-Bit Zahl k verodert und das Ergebnis landet wieder im W Register |
| IORWF | Inclusive OR W und f |
| Syntax: | IORWF f,d |
| Operanten: | 0 ≤ f ≤ 127 und d ∈ [0,1] |
| Operation: | (W) .OR. (f) → (destination) |
| Beeinflusste Statusbits: | C, DC, Z |
| Beschreibung: | Der Inhalt des W Registers wird mit dem Register f verodert und das Ergebnis landet entweder im W Register (d=0) oder im Register f (d=1) |
| MOVF | Move f |
| Syntax: | MOVF f,d |
| Operanten: | 0 ≤ f ≤ 127 und d ∈ [0,1] |
| Operation: | (W) + (f) → (destination) |
| Beeinflusste Statusbits: | Z |
| Beschreibung: | Der Inhalt des Registers f wird entweder in das Arbeitsregister W (d=0) oder wieder in sich selbst kopiert (d=1). Das "in sich selber kopieren" hat den Sinn, zu überprüfen, ob das Register leer ist. Wenn dem nämlich so wäre, dann würde das Z-Bit gesetzt werden. |
| MOVLW | Move Literal to W |
| Syntax: | MOVLW k |
| Operanten: | 0 ≤ k ≤ 255 |
| Operation: | k → (W) |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Die Zahl k wird in das Arbeitsregister geladen |
| MOVWF | Move W to f |
| Syntax: | MOVWF f |
| Operanten: | 0 ≤ f ≤ 127 |
| Operation: | (W) → (f) |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Das Arbeitsregister W wird in das Register f geladen |
| NOP | No Operation |
| Syntax: | NOP |
| Operanten: | / |
| Operation: | / |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Ein Takt lang wird NICHTS gemacht. |
| RETFIE | Return from Interrupt |
| Syntax: | RETFIE |
| Operanten: | / |
| Operation: | TOS → PC,
1 → GIE |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Dieser Befehl steht am Ende der Interrupt Service Routine - aber auch NUR dort!!! Damit wird das Programm wieder an der Stelle fortgesetzt, wo es von einem Interrupt unterbrochen wurde. |
| RETLW | Return with Literal in W |
| Syntax: | RETLW k |
| Operanten: | 0 ≤ k ≤ 255 |
| Operation: | k → (W);
TOS → PC |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Der Wert k wird in das W Register geschrieben, dann die Returnadresse aus dem Stack geholt und in den PC geladen. Das Programm wird an der Stelle fortgesetzt, wo die letzte Subroutine aufgerufen wurde. |
| RETURN | Return from Subroutine |
| Syntax: | RETURN |
| Operanten: | / |
| Operation: | TOS → PC |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Das Programm wird an der Stelle fortgesetzt, wo die letzte Subroutine aufgerufen wurde. |
| RLF | Rotate Left f through Carry |
| Syntax: | RLF f,d |
| Operanten: | 0 ≤ f ≤ 127
d ∈ [0,1] |
| Operation: | siehe unten |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Das Register F wird links rum über das Carryflag "rotiert". D.h. das MSB landet im Carryflag und das Carryflag landet im LSB. Das Ergebnis landet entweder im Arbeitsregister W (d=0) oder wieder im Register f (d=1). |
| RRF | Rotate Right f through Carry |
| Syntax: | RRF f,d |
| Operanten: | 0 ≤ f ≤ 127
d ∈ [0,1] |
| Operation: | siehe unten |
| Beeinflusste Statusbits: | / |
| Beschreibung: | Das Register F wird rechts rum über das Carryflag "rotiert". D.h. das Carryflag landet im MSB und das LSB landet im Carryflag. Das Ergebnis landet entweder im Arbeitsregister W (d=0) oder wieder im Register f (d=1). |