Forum: Mikrocontroller und Digitale Elektronik Frage zu Banking (PIC)


von Erhard (Gast)


Lesenswert?

Hallo,

ich habe einen PIC16F871, dessen Programmspeicher unterteilt ist in 
Bank0 (0h - 07FFh) und Bank1 (ab 0800h).
Ich möchte nun einige Unterprogramme im Programmspeicher in der Bank1 
ablegen; könnte so aussehen:

      org 0

      Hauptprogramm



      org 0800

      Unterprogramme

Meine Frage wäre nun, was zu beachten ist, wenn ich mit einem Call 
Befehl Unterprogramme aufrufe? Muß ich das STATUS-Bit RP0 setzen vor dem 
Aufruf oder PCLATH verändern?

Alles etwas wirr ;)

Danke für Eure Antworten

von Jens (Gast)


Lesenswert?

> ich habe einen PIC16F871, dessen Programmspeicher unterteilt ist in
> Bank0 (0h - 07FFh) und Bank1 (ab 0800h).

Demnach hätte dein PIC > 2048 Byte Programmspeicher, kann also nicht 
sein.

Was tatsächlich in Bänke unterteilt ist, ist das SRAM. Näheres im 
aktuellen Datenblatt auf Seite 13.

MvH
J.

von SIGINT112 (Gast)


Lesenswert?

Was mich noch mehr verwirrt ist die Tatsache, daß laut Datenblatt der 
PIC nur 2K x 14 Programmspeicher hat... also von 0x000 bis 0x7FF. Wo 
soll da die zweite Page sein?!? Zudem verlässt du mit CALL oder GOTO in 
keinem Fall die Page0, weswegen du PCLATH eigentlich auch vergessen 
kannst. Die RPx - Flags dienen dazu, den segmentierten Datenspeicher 
umzuschalten... und aus dem kannst du keinen Programmcode ausführen.

Gruß,
  SIGINT

von Jens (Gast)


Lesenswert?

Er hat natürlich mehr als 2048 Byte Programmspeicher :) Aber halt nur 
eine Bank.

von Erhard (Gast)


Lesenswert?

Ich Hirnbrannt,

habe mich vertan, habe einen PIC16F874!!!!!!!!!!!!!!!

Das ich mit CALL oder GOTO die Page nicht verlasse, ist mir auch klar.
Ich möchte nur wissen, was ich beim Übergang von 07FF (Page0) auf 0800 
(Page1) beachten muß.

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.