Bausteine
 
 
 
 
 

PIC-Mikrocontroller

 
 
 
 
 
Assemblerbefehle
 
 
 
 
 

 
 
 
 
 
gültig für
12F629 / 675   |   16C63A / 65B / 73B / 74B   |   16F83 / C83 / F84 / C74
Diese Controller besitzen einen 14 Bit Opcode
 
 
 
 
 
 
 
 
Byte-Befehle für das Arbeitsregister (W) und die RAM-Speicher (f)
 

 

Befehl

Oper.

Bemerkung

Zyklen

Statusflags

 

 

ADDWF

f, d

Addiere W und f

1

C, DC, Z

 

 

ANDWF

f, d

UND-Verknüpfung von W und f

1

Z

 

 

CLRF

f

Lösche den Speicher f

1

Z

 

 

CLRW

 

Lösche den W -Speicher (Akkumulator)

1

Z

 

 

COMF

f, d

Bilde das COMPLEMENT von f

1

Z

 

 

DECF

f, d

Vermindere den Inhalt von f um 1

1

Z

 

 

DECFSZ

f, d

.. wie oben, wenn 0 Folgebefehl überspringen

1(2)

 

 

 

INCF

f, d

Erhöhe den Inhalt von f um 1

1

Z

 

 

INCFSZ

f, d

.. wie oben, wenn 0 Folgebefehl überspringen

1(2)

 

 

 

IORWF

f, d

ODER-Verknüpfung von W und f

1

Z

 

 

MOVF

f, d

Kopiere f nach W oder nach f selber

1

Z

 

 

MOVWF

f

Kopiere W nach f

1

 

 

 

NOP

 

Keine Operation

1

 

 

 

RLF

f, d

Links rotieren durch das Carry-Flag

1

Z

 

 

RRF

f, d

Rechts rotieren durch das Carry-Flag

1

Z

 

 

SUBWF

f, d

Subtrahiere W von f

1

C, DC, Z

 

 

SWAPF

f, d

Tausche die Nibbles in f

1

 

 

 

XORWF

f, d

XOR-Verknüpfung von W mit f

1

Z

 

 

 

 

 

 

 

 

 

Bit-Befehle für die Bits der RAM-Speicher (f)

 

 

Befehl

Oper.

Bemerkung

Zyklen

Statusflags

 

 

BCF

f, b

Lösche im Speicher f, das Bit b

1

 

 

 

BSF

f, b

Setze im Speicher f, das Bit b

1

 

 

 

BTFSC

f, b

Teste f. b, wenn 0 Folgebefehl überspringen

1(2)

 

 

 

BTFSS

f, b

Teste f. b, wenn 1 Folgebefehl überspringen

1(2)

 

 

 

 

 

 

 

 

 

 

Literal- und Kontroll-Befehle

 

 

Befehl

Oper.

Bemerkung

Zyklen

Statusflags

 

 

ADDLW

k

Addiere die direkt gegebene Zahl k und W

1

C, DC, Z

 

 

ANDLW

k

UND-Verknüpfung der Zahl k und W

1

Z

 

 

CALL

k

Springe zum Unterprogramm mit Adresse k

2

 

 

 

CLRWDT

 

Lösche den Watchdogtimer

1

/TO, /PD

 

 

GOTO

k

Springe unbedingt zur Adresse k

2

 

 

 

IORLW

k

ODER-Verknüpfung von k mit W

1

Z

 

 

MOVLW

k

Kopiere die Zahl k nach W

1

 

 

 

RETFIE

 

Rücksprung von einem Interrupt

2

 

 

 

RETURN

 

Rücksprung von einem Unterprogramm

2

 

 

 

RETLW

k

.. wie oben, mit der Zahl k in W

2

 

 

 

SLEEP

 

Gehe in den Standby-Modus

1

/TO, /PD

 

 

SUBLW

k

Subtrahiere die direkt gegebene Zahl k von W

1

C, DC, Z

 

 

XORLW

k

XOR-Verknüpfung von der Zahl k und W

1

Z

 

 

 
 
 
 
 
Erläuterungen zur obigen Tabelle
Die obige Tabelle zeigt alle Assemblerbefehle der CPU von den oben angegebenen PIC-Mikrocontrollern. Die Befehle und ihre Operanden wurden grün hervorgehoben. Weitere Informationen sind durch einen Klick auf den Befehl zu erreichen.

Bei den Operanden stehen W, f, d, b und k für folgende Zahlen.
 
 
 
 

 

W

Das Arbeitsregister (Workingregister) oder der Akkumulator der CPU im PIC Controller. Dieses Register ist nicht direkt adressierbar, sondern nur über die Assemblerbefehle zugänglich.

 

 

f

Die Adresse (bzw. der Label-Name) von einem der freien RAM-Speicher (Fileregister) oder eines Spezial-Funktions-Registers (SFR) des Controllers.

 

 

d

Bei den auf Bytes bezogenen Befehlen gibt dieser Parameter an, wo das Ergebnis einer Operation abgelegt werden soll. d kann nur die Werte 0 oder 1 besitzen. (Vorgabewert 1)
d= 0, das Ergebnis wird im W-Register der CPU abgelegt

d= 1, das Ergebnis wird im RAM-Speicher f abgelegt.

 

 

b

Bei den auf Bits bezogenen Befehlen gibt dieser Parameter an, welches Bit 0-7 der RAM-Speicherzelle f benutzt werden soll.

 

 

k

Bei den Befehlen, in denen eine direkt anzugebene Zahl oder Adresse (ein Literal) auftritt bezeichnet k diese Zahl.

 

 
 
 
 
 
 
 
Bedingte Verzweigungen
Bedingte Verzweigungen können aus den Befehlen gebildet werden, die 1 oder 2 Taktzyklen benötigen. Bei diesen findet ein Vergleich statt ...


  • Trifft dieser Vergleich nicht zu, so wird der nächst folgende Befehl ausgeführt, der typischerweise ein Sprung (GOTO) sein wird. Diese Ausführung des Befehls benötigt einen Taktzyklus.
  • Trifft der Vergleich zu, so wird anstelle des nächst folgenden Befehls ein no Operation (NOP) -Befehl ausgeführt und danach mit dem übernächsten Befehl weitergemacht. (Der GOTO-Befehl wird also übersprungen). Diese Ausführung des Befehls benötigt zwei Taktzyklen.

Beispiel:
Es sei COUNT eine RAM-Speicherzelle mit einem Inhalt ungleich 0. Dieser wird in der Schleife LOOP bei jedem Durchlauf um den Wert 1 vermindert. Solange der Inhalt von COUNT nicht Null ist wird der Befehl GOTO LOOP benutzt. Bei dem Inhalt COUNT=0 wird GOTO LOOP durch einen NOP-Befehl der CPU übersprungen und die Programmausführung gelangt an die Stelle 'mache weiter'.

      LOOP  DECFSZ COUNT, 1  ; Inhalt COUNT um 1 vermindern
            GOTO LOOP        ; wenn COUNT ungleich 0
            mache weiter     ; wenn COUNT gleich 0
 
 
 
 
 
Derivate
Die hier vorgestellte Assemblersprache betrifft in der Regel mehrere Derivate mit unterschiedlichen Hardware-Eigenschaften. Welche Eigenschaften verfügbar sind, muss dem jeweiligen Datenblatt entnommen werden, ebenso wie der Umfang des verfügbaren Programm- und des RAM-Speichers. Besondere Aufmerksamkeit ist hierbei den SFR-Registern zu widmen. Mit diesen lassen sich die Hardware-Eigenschaften des jeweiligen Derivats ein- oder ausschalten, bzw. den Anwendungswünschen anpassen. Unter ihnen befinden sich auch die digitalen und analogen Tore des jeweiligen Controllers.
 
 
 
 
www..de