Forum: Mikrocontroller und Digitale Elektronik PIC makro für Page selektion


von HDW (Gast)


Lesenswert?

Hallo

Im Pic 16f877 gibt es vier Seiten im Programm-Speicher.
Ich möchte die Seiten per Makro auswählen.

etwa so:

page0    macro
         bcf     PCLATH, 3
         bcf     PCLATH, 4
         endm


Mein Verständnisproblem: Dieses Makro muss irgendwo gespeichert werden.
Also wohl im Programmspeicher. Dann muss dies aber auf einer der vier
Seiten geschehen.

Mit dem makro möchte ich, wenn ich z.B. in Seite 1 im Programmspeicher
bin, mit dem Aufruf des Makros "page0" auf Seite 0 wechseln.
Wenn jetzt das Makro in Seite 1 gespeichert ist, geht das. Wenn es aber
in Seite 3 liegt, geht das nicht mehr.


Muss ich denn diese Makros vier mal erstellen, auf jeder Seite einzeln?

Oder greift der PIC dann unabhängig von der Seite auf das Makro zu?
Also sucht er praktisch das Makro? Aber das kann er doch sicher nicht,
oder??



mfg    Wolfram Hildebrandt

von HDW (Gast)


Lesenswert?

Der Simulator im MPLAB hat das geklärt.
Die Makros sind nur Assembleranweisungen, die dafür sorgen, dass immer
dann, wenn ein Makro aufgerufen wird, der Inhalt des Makros an diese
Stelle in den Programmspeicher geschreiben wird. Also nur eine
Vereinfachung für den Benutzter.

von Nico Hansen, Björn Sörensen (Gast)


Lesenswert?

du kannst die "macros" auch auf einer Seite schreiben, musst aber in
deinem Hauptprogramm in der include mit angeben z.B

include <page0.inc>

das "Unterfenster"(dein macroprogramm) musst du nicht als ASM
speichern, sondern als INC
in deinem Fall mußt du das Macroprogramm als page0.inc abspeichern, wie
in der include angegeben.
Unser problem war ebenfalls, das man ein und das selbe macro nicht
zweimal aufgerufen im Hauptprogramm aufrufen,weil die Labels dann
doppelt benutzt werden.
nehm dann einfach die Lables weg springe mit

goto $-5    (springt 5 Assemblerbefehle nach oben) oder

goto $+5     (dann springt er nach unten)

mfg Björn und nico, die gerade in der Ausbildungswerkstatt sitzen und
die Probleme mit MACRO auch versuchen zu lösen

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.