|
|
||
|
|
||
| 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 |
|
|
|
Addiere W und f |
1 |
C, DC, Z |
|
||
|
|
UND-Verknüpfung von W und f |
1 |
Z |
|
||
|
|
Lösche den Speicher f |
1 |
Z |
|
||
|
|
|
Lösche den W -Speicher (Akkumulator) |
1 |
Z |
|
|
|
|
Bilde das COMPLEMENT von f |
1 |
Z |
|
||
|
|
Vermindere den Inhalt von f um 1 |
1 |
Z |
|
||
|
|
.. wie oben, wenn 0 Folgebefehl überspringen |
1(2) |
|
|
||
|
|
Erhöhe den Inhalt von f um 1 |
1 |
Z |
|
||
|
|
.. wie oben, wenn 0 Folgebefehl überspringen |
1(2) |
|
|
||
|
|
ODER-Verknüpfung von W und f |
1 |
Z |
|
||
|
|
Kopiere f nach W oder nach f selber |
1 |
Z |
|
||
|
|
Kopiere W nach f |
1 |
|
|
||
|
|
|
Keine Operation |
1 |
|
|
|
|
|
Links rotieren durch das Carry-Flag |
1 |
Z |
|
||
|
|
Rechts rotieren durch das Carry-Flag |
1 |
Z |
|
||
|
|
Subtrahiere W von f |
1 |
C, DC, Z |
|
||
|
|
Tausche die Nibbles in f |
1 |
|
|
||
|
|
XOR-Verknüpfung von W mit f |
1 |
Z |
|
||
|
|
|
|
|
|
|
|
|
|
Bit-Befehle für die Bits der RAM-Speicher (f) |
|
|
|
Befehl |
Oper. |
Bemerkung |
Zyklen |
Statusflags |
|
|
|
Lösche im Speicher f, das Bit b |
1 |
|
|
||
|
|
Setze im Speicher f, das Bit b |
1 |
|
|
||
|
|
Teste f. b, wenn 0 Folgebefehl überspringen |
1(2) |
|
|
||
|
|
Teste f. b, wenn 1 Folgebefehl überspringen |
1(2) |
|
|
||
|
|
|
|
|
|
|
|
|
|
Literal- und Kontroll-Befehle |
|
|
|
Befehl |
Oper. |
Bemerkung |
Zyklen |
Statusflags |
|
|
|
Addiere die direkt gegebene Zahl k und W |
1 |
C, DC, Z |
|
||
|
|
UND-Verknüpfung der Zahl k und W |
1 |
Z |
|
||
|
|
Springe zum Unterprogramm mit Adresse k |
2 |
|
|
||
|
|
|
Lösche den Watchdogtimer |
1 |
/TO, /PD |
|
|
|
|
Springe unbedingt zur Adresse k |
2 |
|
|
||
|
|
ODER-Verknüpfung von k mit W |
1 |
Z |
|
||
|
|
Kopiere die Zahl k nach W |
1 |
|
|
||
|
|
|
Rücksprung von einem Interrupt |
2 |
|
|
|
|
|
|
Rücksprung von einem Unterprogramm |
2 |
|
|
|
|
|
.. wie oben, mit der Zahl k in W |
2 |
|
|
||
|
|
|
Gehe in den Standby-Modus |
1 |
/TO, /PD |
|
|
|
|
Subtrahiere die direkt gegebene Zahl k von W |
1 |
C, DC, Z |
|
||
|
|
XOR-Verknüpfung von der Zahl k und W |
1 |
Z |
|
|
|
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 |
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 ...
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. | ||
|
|
.de