PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC - Befehle



Valentiano
25.11.2007, 09:31
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.

T.J.
25.11.2007, 10:17
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

PICture
25.11.2007, 21:45
Hallo Valentiano!

Der default Wert ist d=0.

MfG

kalledom
26.11.2007, 10:10
@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.

T.J.
26.11.2007, 10:13
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 ;)

Valentiano
26.11.2007, 20:35
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.

PICVB
26.11.2007, 21:01
Hallo,
ich glaube es liegt an den Unterstrichen. mach die mal weg und probiers erneut.

T.J.
26.11.2007, 21:30
was sollten die Unterstriche denn tun? kann man die in Variablennamen nicht verwenden?

Enrock
27.11.2007, 07:39
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ß

PICture
27.11.2007, 07:41
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

Enrock
27.11.2007, 07:51
Servus,

das mit dem default mag ich nicht ausschließen, da ich nicht jeden PIC kenne.
Daher sollte man auch immer die Destination mit angeben. Dann kann man solche Fehler ausschließen.

Ich beziehe mich bei meiner Antwort auf das Datenblatt des PIC 16F87X

Destination select; d = 0: store result in W,
d = 1: store result in file register f.
Default is d = 1.

Gruß