Pic und BANKSEL

Gast #4765428
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?
Gast #4765466
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)
OP #4765504
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
#4765667
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!
Gast #4765705
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.
Angehängte Dateien:

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