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.
Kenne die Pics nicht, aber in anderen Assemblern ist das ein Punkt, also PORTB.3.
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
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
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.
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.
<<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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.