Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

Zeile 190: Zeile 190:
 
| 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).
 
| 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).
 
|}
 
|}
 
  
  
Zeile 369: Zeile 368:
 
| 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.
 
| 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.
 
|}
 
|}
 +
  
 
{|{{Blauetabelle}}
 
{|{{Blauetabelle}}
Zeile 389: Zeile 389:
 
|Beschreibung:  
 
|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.
 
| 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.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
|'''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)
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
|'''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.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
|'''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
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
|'''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
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
|'''NOP'''
 +
|'''No Operation'''
 +
|-
 +
|Syntax:
 +
|NOP
 +
|-
 +
|Operanten:
 +
| /
 +
|-
 +
|Operation:
 +
| /
 +
|-
 +
|Beeinflusste Statusbits:
 +
| /
 +
|-
 +
|Beschreibung:
 +
| Ein Takt lang wird NICHTS gemacht.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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.
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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).
 +
|}
 +
 +
 +
{|{{Blauetabelle}}
 +
| '''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).
 
|}
 
|}
  

Version vom 10. April 2007, 15:40 Uhr

!!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).

LiFePO4 Speicher Test