mikrocontroller.net

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


Autor: Mark Thalle (bitts)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

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

Autor: Mark Thalle (bitts)
Datum:

Bewertung
0 lesenswert
nicht 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





Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache das mit:
#define S1 PORTB,3

und dann
  btfsc S1

Autor: Mark Thalle (bitts)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mark Thalle (bitts)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: xxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Carry brauchst du nicht zu löschen.

Autor: Jötze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.