PIC makro für Page selektion

Gast #38796
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
Gast #38797
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.
Gast #38798
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren