Forum: Mikrocontroller und Digitale Elektronik Pic und BANKSEL


von Hans-Jürgen K. (hannes1398)


Lesenswert?

Hallo
Ich habe mal eine Frage zum Befehl Banksel.
Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel 
ausführe gehen die Daten dann im Arbeitsregister verloren?
Eigentlich dürfte das ja nicht der Fall sein.

Gruß
HJ

von Wolfgang (Gast)


Lesenswert?

Hans-Jürgen K. schrieb:
> Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel
> ausführe gehen die Daten dann im Arbeitsregister verloren?

Banksel ist wie ein/mehrere zusätzliches Adressbit für die 
Registerauswahl, dass aber nicht mehr in das Adressierungsschema passt 
und deswegen separat passend gesetzt werden muss.

Welches Register meinst du mit "Arbeitsregister".

Um welchen Prozessor geht es überhaupt?

von Toxic (Gast)


Lesenswert?

Hans-Jürgen K. schrieb:
> Wenn ich Daten im Arbeitsregister habe und dann den Befehl Banksel
> ausführe gehen die Daten dann im Arbeitsregister verloren?

Wenn Du noch MPLAB v8.xx anstatt MPLABX verwendest,dann kannst Du unter 
"Help"/Topics/Language Tools/MPASM Assembler unter "Index" folgende 
Suchbegriffe eingeben:
banksel
pagesel
pageselw
Da wird erwaehnt was modifiziert wird und soweit ich erkennen konnte 
wird nur nur bei "pageselw" das Arbeitsregister "w" veraendert - in den 
anderen Faellen werden lediglich die Statusbits entsprechend gesetzt 
(was Du ansonsten auch manuell tun muesstest)

von Hans-Jürgen K. (hannes1398)


Lesenswert?

Hallo
Es geht um den Pic16F1847 der hat ja nun mal sehr viele Bänke.
Ich arbeite noch mit MPLAB und schreibe alles in ASM. Mach das nur Hobby 
mäßig. Im speziellen fall geht es um das SSP1BUF Register(Bank4) das ich 
ins Arbeitsregister "w" schreibe und dann auf Bank 0 umstelle um die 
Daten weiter zu verarbeiten.

MFG
HJ

von Thomas E. (picalic)


Lesenswert?

Servus,

die "Enhanced Midrange" PICs, also 12F1xxx und 16F1xxx, haben ja den 
"movlb"-Befehl, der die Daten direkt ins BSR-Register schreibt, ohne 
irgenwas anderes zu verändern. Aus "banksel TRISA" macht der Assembler 
dann einen entsprechenden "movlb 1"-Befehl. Bei einem PIC12F629 macht er 
aus dem "banksel" dann stattdessen den benötigten "bsf 
STATUS,RP0"-Befehl.

-> am Besten, Du benutzt immer "banksel", statt die entsprechenden 
Befehle selbst!

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

Thomas E. schrieb:
> Aus "banksel TRISA" macht der Assembler
> dann einen entsprechenden "movlb 1"-Befehl.

Ja so isses
Hier ein Beispiel.Hab fuer das "Projekt" einen PIC16F1827 genommen,weil 
es fuer den ein Template gibt.

Als Testcode habe ich 2 Zeilen eingefuegt:
ORG 0x0009
BANKSEL LATA

Man sieht im beigefuegten Screenshot,dass an der Programmadresse 0x0009
MOVLB 0x2 steht da LATA in der Bank 2 zu finden ist.
Es werden ansonsten keine weitere Register veraendert.

von Hans-Jürgen K. (hannes1398)


Lesenswert?

Hallo
Danke für die Antworten, werde mir das angewöhnen nur noch Banksel zu 
benutzen.

Gruß
HJ

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.