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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.