Forum: Mikrocontroller und Digitale Elektronik Variable für Bit beim PIC Assembler


von Mark T. (bitts)


Lesenswert?

Hallo,

ich habe seit Jahren das erste mal wieder einen Pic in den Fingern und 
stolpere über das eine und andere Problem und finde keine Lösung über 
google.


Kann man beim Assembler einem Bit einen Variablennamen geben?


Folgende Zeile wird mit einem Fehler quittiert:

S1   equ   PORTB,3


->  "Error 108: Illegal Character"


Ich habe im Netz nur Beispiele dafür gefunden, dass ganzen Bytes 
Variablennamen gegeben wurden. Ich vermute daher, dass das mit Bits 
nicht geht, bin mir aber nicht sicher.

von Jürgen (Gast)


Lesenswert?

Kenne die Pics nicht, aber in anderen Assemblern ist das ein Punkt, also 
PORTB.3.

von Mark T. (bitts)


Lesenswert?

Ne, das funktioniert leider auch nicht.

Ich habe inzwischen auch probiert direkt die Adresse anzugeben. Geht 
aber auch nicht.

S1   equ   0x06,3       -> illegal charakter
S1   equ   0x06.3       -> missing operator


Damit es einigermaßen leserlich bleibt, habe ich mir so weitergeholfen:

S1   equ     3
     btfsc   PORTB,S1





von Uwe N. (ulegan)


Lesenswert?

Ich mache das mit:
#define S1 PORTB,3

und dann
  btfsc S1

von Mark T. (bitts)


Lesenswert?

Ah, super, das funktioniert.


Hat hier vielleicht noch jemand eine Idee, wie man eine Variable durch 2 
teilt? Mit folgenden Zeilen müsste das doch gehen, wenn ich nicht irre:

bcf  STATUS,C  ; Lösche Carry-Flag
rrf  T1,1    ; T1 = T1 / 2

von Dieter Werner (Gast)


Lesenswert?

Wenn die zum Controller passende include-Datei von Microchip eingebunden 
ist kann man auch rrf T1,f schreiben, da muss man nicht überlegen was 
die ,1 bedeutet (geht mir zumindestens so). Genauso lässt sich an Stelle 
,0 auch ,w verwenden.

von Mark T. (bitts)


Lesenswert?

Diese Datei ist hier eingebunden. An anderen Stellen im Programm habe 
ich auch die Namen der Konstanten verwendet. Im Moment kram ich mir die 
Sachen hier und da zusammen, sodass das ein Mischmasch aus allen 
möglichen Stilen ist.

Aber ich habe wohl ein viel grundsätzlicheres Problem.
Mein 16F84 macht hier, was er will, nur nicht das, was ich erwarte.
Ich bekomme zwar ganz problemlos ein Modellbauservo angesteuert, aber 
sobald ich ein zweites anschließe, hängen beide am Anschlag.

Dann wollte ich testweise über einen Schalter Variablen im laufenden 
Betrieb verändern. Weil das nicht ging, habe ich eine LED parallel 
geschaltet, die mir den Status des Schalters anzeigen sollte. Nicht mal 
das geht, wobei ich mir sicher bin, dass das Programm die Stelle 
passiert.

Es ist unglaublich.

Ich löte jetz erstmal alles auf eine Lochrasterplatine und probier es 
dann. Dieses Steckboard ist mir nicht ganz geheuer.

von xxx (Gast)


Lesenswert?

Das Carry brauchst du nicht zu löschen.

von Jötze (Gast)


Lesenswert?

<<Das Carry brauchst du nicht zu löschen.>>

Selbstverständlich muss man das löschen.

Beim Rechtsrotieren wird das Carry ins MSB geschoben. Wenn das Carry 
also gesetzt war, dann ist nichts mit geteilt durch 2 ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.