\language\{Deutsch}

\title\{Akürzungen in dieser Kurzanleitung}
\text\{
f   : File-Register. Diese Register stehen im 
      RAM-Speicher des Mikrocontrollers.
      f kann sein: 0 - 31 (PIC16C54/55/56/57)
                   0 - 80 (nur PIC16C57)
\newline\
W   : Work-Register (Arbeitsregister). Alle Rechenoperationen
      und logische Operationen werden in diesem Register
      durchgeführt.
      (In anderen CPU's wird dieses Register Akkumulator
       genannt.)
\newline\
b   : Abkürzung für BIT. b kann sein: 0 - 7
\newline\
k   : Unmittelbares Datum. (8-Bit Daten)
\newline\
d   : d ist entweder W oder fehlt gänzlich.
      Diese Angabe wird z.B. bei SUBWF f,d verwendet.
      (f siehe oben)
\newline\
      Beispiel:
      - SUBWF 8,W
        Vom Inhalt des Registers 8 wird der Inhalt von W
        abgezogen und dann das Ergebnis wieder in W
        abgespeichert.
      - SUBWF 8
        Vom Inhalt des Registers 8 wird der Inhalt von W
        abgezogen und dann das Ergebnis wieder in Register
        8 abgespeichert.}

\title\{Byte-Orientierte File-Register-Operationen}

\subtitle\{NOP}
\text\{Leerbefehl. Es wird keine Operation ausgeführt.}

\subtitle\{MOVWF  f}
\text\{Der Inhalt des Registers W wird in f kopiert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)}

\subtitle\{CLRW}
\text\{Das Register W wird gelöscht.}

\subtitle\{CLRF   f}
\text\{Das Register f wird gelöscht.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)}

\subtitle\{SUBWF  f,d}
\text\{Vom Inhalt von Register f wird der Inhalt von Register
W abgezogen und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. SUBWF 8,W)
             d fehlt gänzlich (-> z.B. SUBWF 8)}

\subtitle\{DECF   f,d}
\text\{Vom Inhalt von Register f wird EINS abgezogen
und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. DECF 8,W)
             d fehlt gänzlich (-> z.B. DECF 8)}

\subtitle\{INCF   f,d}
\text\{Zum Inhalt von Register f wird EINS dazu addiert
und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. INCF 8,W)
             d fehlt gänzlich (-> z.B. INCF 8)}

\subtitle\{DECFSZ f,d}
\text\{Vom Inhalt von Register f wird EINS abgezogen
und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert. Außerdem wird der nächste Befehl
übersprungen, wenn das Ergebnis gleich NULL war.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. DECFSZ 8,W)
             d fehlt gänzlich (-> z.B. DECFSZ 8)}

\subtitle\{INCFSZ f,d}
\text\{Zum Inhalt von Register f wird EINS dazu addiert
und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert. Außerdem wird der nächste Befehl
übersprungen, wenn das Ergebnis gleich NULL war.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. INCFSZ 8,W)
             d fehlt gänzlich (-> z.B. INCFSZ 8)}

\subtitle\{IORWF  f,d}
\text\{Der Inhalt von Register f wird mit dem Inhalt von Register
W logisch  ODER  verknüpft und dann das Ergebnis je nach 
d wieder in W oder in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. IORWF 8,W)
             d fehlt gänzlich (-> z.B. IORWF 8)}

\subtitle\{ANDWF  f,d}
\text\{Der Inhalt von Register f wird mit dem Inhalt von Register
W logisch  UND  verknüpft und dann das Ergebnis je nach 
d wieder in W oder in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. ANDWF 8,W)
             d fehlt gänzlich (-> z.B. ANDWF 8)}

\subtitle\{XORWF  f,d}
\text\{Der Inhalt von Register f wird mit dem Inhalt von Register
W logisch  EXKLUSIV-ODER  verknüpft und dann das Ergebnis je nach 
d wieder in W oder in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. XORWF 8,W)
             d fehlt gänzlich (-> z.B. XORWF 8)}

\subtitle\{ADDWF  f,d}
\text\{Zum Inhalt von Register f wird der Inhalt von Register
W addiert und dann das Ergebnis je nach d wieder in W oder 
in f abgespeichert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. ADDWF 8,W)
             d fehlt gänzlich (-> z.B. ADDWF 8)}

\subtitle\{MOVF   f,d}
\text\{Der Inhalt von Register f wird in das Register d
kopiert.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. MOVF 8,W)
             d fehlt gänzlich (-> z.B. MOVF 8)}

\subtitle\{COMF   f,d}
\text\{Der Inhalt von Register f wird invertiert und dann 
in das Register d geschrieben.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. COMF 8,W)
             d fehlt gänzlich (-> z.B. COMF 8)}

\subtitle\{RRF    f,d}
\text\{Der Inhalt von Register f wird um eine Stelle nach
rechts geschoben und dann in das Register d geschrieben.
Das Carry-Bit wird nach d(7) geshrieben, dann wird das 
Carry-Bit mit f(0) geladen.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. RRF 8,W)
             d fehlt gänzlich (-> z.B. RRF 8)}

\subtitle\{RLF    f,d}
\text\{Der Inhalt von Register f wird um eine Stelle nach
linkss geschoben und dann in das Register d geschrieben.
Das Carry-Bit wird nach d(0) geshrieben, dann wird das 
Carry-Bit mit f(7) geladen.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. RLF 8,W)
             d fehlt gänzlich (-> z.B. RLF 8)}

\subtitle\{SWAPF  f,d}
\text\{Die unteren 4 Bits von Register f werden mit den
oberen 4 Bits des Registers f getauscht. Danach wird das
Ergebnis in das Register d geschrieben.
\newline\
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
d kann sein: W oder           (-> z.B. SWAPF 8,W)
             d fehlt gänzlich (-> z.B. SWAPF 8)}

\title\{Bit-Orientierte Befehle}

\subtitle\{BSF    f,b}
\text\{Im Register f wird Bit b gesetzt.
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
b kann sein: 0 - 7}

\subtitle\{BCF    f,b}
\text\{Im Register f wird Bit b gelöscht.
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
b kann sein: 0 - 7}

\subtitle\{BTFSC  f,b}
\text\{Im Register f wird Bit b geprüft. Ist es auf NULL
gesetzt, wird der nächste Befehl übersprungen.
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
b kann sein: 0 - 7}

\subtitle\{BTFSS  f,b}
\text\{Im Register f wird Bit b geprüft. Ist es auf EINS
gesetzt, wird der nächste Befehl übersprungen.
f kann sein: 0 - 31 (PIC16C54/55/56/57)
             0 - 80 (nur PIC16C57)
b kann sein: 0 - 7}

\title\{Kontroll- und Datenoperationen}

\subtitle\{OPTION}
\text\{Der Inhalt des Registers W wird in das OPTION-Register
kopiert.}

\subtitle\{SLEEP}
\text\{Watchdogtimer wird gelöscht und der Controller geht dann
in einen Standby-Modus.}

\subtitle\{CLRWDT}
\text\{Der Watchdogtimer wird gelöscht.}

\subtitle\{TRIS   f}
\text\{Speichert den Inhalt von W im Tristate-Register f
ab. Steht ein Bit auf "0", so bedeutet das, daß das 
dazu korrespondierende I/O-Bit auf Ausgabe steht.
Steht ein Bit (im W-Register) auf "1", so steht das
entsprechende I/O-Bit auf Eingang.
\newline\
Bemerkung: Nach einem RESET stehen alle I/O-Bits auf
           "Eingang".
\newline\
f kann sein: 5, 6 und 7}

\subtitle\{RETLW  k}
\text\{Springt aus einem Unterprogramm zurück und kopiert k
in das Register W.
k ist ein 8-Bit Wert.}

\subtitle\{CALL   k}
\text\{Springt in ein Unterprogramm. k ist ein 8-Bit Wert
und ist die Sprungadresse.
\newline\
Bemerkung: - Der Stackbereich ist nur für zwei Adressen 
             ausreichend!
           - Weil k ein 8-Bit Wert ist, müssen sich 
             Unterprogramme in den ersten 256 Adressen
             befinden!}

\subtitle\{GOTO   k}
\text\{Absoluter Sprung an die Adresse k. k ist ein
9-Bit Wert.}

\subtitle\{MOVLW  k}
\text\{Kopiert den Wert k in das Register W.}

\subtitle\{IORLW  k}
\text\{Das Register W wird mit k logisch  ODER  verknüpft
und dann in W abgespeichert.}

\subtitle\{ANDLW  k}
\text\{Das Register W wird mit k logisch  UND  verknüpft
und dann in W abgespeichert.}

\subtitle\{XORLW  k}
\text\{Das Register W wird mit k logisch  Exklusiv-ODER  
verknüpft und dann in W abgespeichert.}

