-
PIC - Befehle
hallo zusammen,
ich bin ein Anfänger beim PIC-Programmieren und habe eine Frage über Byte-orientierte Register Operation.
z.B. Befehl addwf, Syntax: addwf f,d
wenn ich d keinen Wert gebe, ist der default Wert d=0 oder d=1?
oder muss man einen Wert geben?
dank im Voraus.
-
also ich gebe das d immer mit an, einen syntaxfehler bringt er zwar nicht, aber wenn man mal später über den quelltext schaut ist es besser wenn man auch die 0 da stehen hat. so sieht man wo ein d hingehört und wo nicht.
in deinem Fall bedeutet d= 0; ergebnis in W und d=1; ergebnis in f
wenn du es zu allen wissen willst gibt es bei sprut ne gute tabelle: http://sprut.de/electronic/pic/assemble/befehle.html
oder du guckst bei MPLAB in die MPASM Assembler Hilfe, Thema: PIC18 Device Instruction Set.
Die Tabellen gibt es natürlich auch für andere Kerne
-
Hallo Valentiano!
Der default Wert ist d=0.
MfG
-
@PICture
Das lese ich aber im Datasheet des PIC16F87x etwas anders:
d Destination select:
d = 0: store result in W,
d = 1: store result in file register f.
Default is d = 1.
Ich schreibe ein "W", wenn das Ergebnis im Work-Rgister bleiben und das File-Register nicht verändert werden soll.
-
ja das mit W und F geht auch, aber ich bin dennoch immer der Meinung man sollte es in jedem Fall hinschreiben auch wenn es ein default gibt ;)
-
dank für die Antwort.
ich habe heute MPLAB IDE v6.30 installiert und ein Beispiel von pic 16f876 compiliert,
movf variable_2
addwf variable1_1
kommt keine Fehlermeldung oder Warnung, sondern zwei Message:
Message[305] C:\MYPROJ\FILE1.ASM 72 : Using default destination of 1 (file).
Message[305] C:\MYPROJ\FILE1.ASM 73 : Using default destination of 1 (file).
das bedeutet, default ist 1.
-
Hallo,
ich glaube es liegt an den Unterstrichen. mach die mal weg und probiers erneut.
-
was sollten die Unterstriche denn tun? kann man die in Variablennamen nicht verwenden?
-
Guten Morgen,
also das mit den Unterstrichen ist unsinn. Die kannst du benutzen!!!
Das liegt allein an deinen Befehlen. Musst mal ins Datenblatt schauen.
Bei movf kann man entweder ins Arbeitsregister w oder in die Speicherzelle f speichern. Wird nichts angegeben, wird in f (1) default gespeichert. Mit movf f,0 würdest du in w speichern.
In deinem Fall speicherst du das, was in variable_2 ist, wieder in die Speicherzelle variable_2 zurück. Ob das beabsichtigt ist?
Bei addwf sieht das ganze ähnlich aus. Addiere w auf f und speichere dann in w(0) oder in f(1) default.
Du addierst das was in w steht auf variable1_1 und speicherst in variable1_1 .
Ich hoffe das hat geholfen!
Gruß
-
Hallo!
Kann es sein, dass es für verschiedene Befehle und verschiedene PICs verschiedene defaults gibt?
Immer wenn ich bei z.B. incf X,1 das 1 vergessen habe, hat die X nicht inkrementiert, das default ist dann 0. Am besten ist immer ausprobieren.
MfG